繁体   English   中英

如何在前一次调用中执行相同的功能后多次调用一次函数? (JavaScript的)

[英]How to call a function multiple times 1 second after the same function has been executed in a previous call? (javascript)

我的问题是如何在一秒后调用函数“changeArray”? 我希望第一个“changeArray”在1秒后被调用,下一个在2秒后被调用,依此类推。 因此,在执行上一个函数后,应该在1秒后调用每个函数。

 var array = [ [0,0,0], [0,0,0], [0,0,0] ]; function changeArray(i,j) { array[i][j] +=1; } changeArray(1,1); //after 1 second changeArray(1,1); //after 2 seconds changeArray(0,0); //after 3 seconds changeArray(0,0); //after 4 seconds console.log(array); 

如果没有关于如何确定要传递给changeArray参数的changeArray ,可以尝试这样做:

function addInterval(func, i) {
    window.setTimeout(function() {
        func();
    }, 1000 * i);
}

addInterval(() => changeArray(1, 1), 1);
addInterval(() => changeArray(1, 1), 2);
addInterval(() => changeArray(0, 0), 3);
addInterval(() => changeArray(0, 0), 4);

您可以使用Window setTimeout方法。 如果您需要更好的语法或在循环中使用它,您可以在下面定义辅助方法:

defer = function(method, seconds, args) {
  var fn = function() {
      return method.apply(null, args);
  }

  return setTimeout(fn, seconds * 1000);
}

并使用它:

defer(changeArray, 1, [1, 1]);
defer(changeArray, 2, [1, 1]);
defer(changeArray, 3, [0, 0]);
defer(changeArray, 4, [0, 0]);

或者在for循环中:

var count = 1;
for(var i = 0; i < array.length; i++) {
    var row = array[i];
    for(var j = 0; j < row.length; j++) {
        defer(changeArray, count, i, j);
        count++;
    }
}

查看setTimeoutsetInterval

setTimeout(() => changeArray(1,1), 1000); //after 1 second
var counter=0
setInterval(function(){
++window.counter;
var a, b;
if (window.counter== /*however many seconds */ ) {
a=//what ever you want for the time passed
b=//what ever you want for the time passed
}
// add more if statements like that for different times
changeArray(a, b);
 }, 1000)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM