在上一次调用中执行同一函数后,如何在 1 秒内多次调用函数? (javascript)
How to call a function multiple times 1 second after the same function has been executed in a previous call? (javascript)
我的问题是如何在一秒钟后调用函数 "changeArray"?我希望在 1 秒后调用第一个 "changeArray",在 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);
查看 setTimeout
and setInterval
:
setTimeout(() => changeArray(1,1), 1000); //after 1 second
如果没有关于如何决定将哪些参数传递给 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);
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)
您可以使用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++;
}
}
我的问题是如何在一秒钟后调用函数 "changeArray"?我希望在 1 秒后调用第一个 "changeArray",在 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);
查看 setTimeout
and setInterval
:
setTimeout(() => changeArray(1,1), 1000); //after 1 second
如果没有关于如何决定将哪些参数传递给 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);
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)
您可以使用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++;
}
}