【问题标题】:Run multiple functions at different time intervals在不同的时间间隔运行多个函数
【发布时间】:2015-05-18 08:27:05
【问题描述】:

我有四个功能,

functionOne();
functionTwo();
functionThree();
functionFour();

我要做的就是在不同的时间段内调用这些函数,也就是

// run functionOne
functionOne();
// delay for a duration of 200ms

//run functionTwo
functionTwo();
// delay for a duration of 600ms

// run functionThree
functionThree();
// delay for a duration of 200ms

// run functionFour
functionFour();
// delay for a duration of 1600ms

// repeat from one again!

我知道,setInterval(functionOne, time); 可以在特定时间循环functionOne

如何使函数按照上面给出的持续时间顺序运行? 谢谢。

【问题讨论】:

  • 你能说得更具体些吗?您需要开始第一个,然后完成它并开始下一个还是在同一时刻开始所有这些?
  • 我不明白您所说的“运行 200 毫秒”是什么意思。您无法选择要运行函数的时间。您可以做的是在 functionOne 运行 functionTwo 之后等待 200 毫秒。这就是你想要的吗?
  • 你可以延迟一个函数的执行,但你不能决定它什么时候必须停止。我们应该假设函数肯定会在那段时间内停止,还是...?
  • @briosheje 是的,同样的顺序
  • 啊哈投反对票?让我知道原因!

标签: javascript jquery function loops delay


【解决方案1】:

尝试:

var the_time = 1000;
var funArr = [funcitonOne,funcitonTwo,funcitonThree,funcitonFore];
for (var i=0; i<funArr.length;i++){
  setInterval(funArr[i], the_time*(i+1));
}

更新:

将持续时间传递给函数:

function funcitonOne(time) {
    console.log('funcitonOne', time);
}
function funcitonTwo(time) {
    console.log('funcitonTwo', time);
}
var funArr = [funcitonOne, funcitonTwo];
for (var i = 0; i < funArr.length; i++) {
    var interval = 500 * (i + 1);
    (function (i,interval) {
        setInterval(function(){
            funArr[i].call(this, interval);
        }, interval);
    }(i,interval));
}

【讨论】:

  • 不应该是[functionOne(),functionTwo(),functionThree(),functionFour()]吗? 1)注意你的拼写... 2)如果你在数组中存储函数,你仍然需要()对吗?
  • @chris97ong 不需要,functionOne 是一个变量,functionOne() 会执行。
  • the_time 是什么?我可以将时间存储在某个地方并一起使用吗?
  • @sdfsdf 是的,the_time 是间隔时间变量,正如我在上面更新的那样。
  • 我的意思是是否可以将持续时间传递给函数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多