我有一个带有任何参数的数组,例如:let EveryTen = ['a,'b','c']
,我需要每5分钟对数组中的每个parameter(3)执行一个函数。
我尝试使用此代码,但5分钟后立即运行所有内容
EveryTen.forEach(element => {
setDelay(element)
});
const setDelay = (element) => {
setTimeout(function(){
UpdateDataPost(element); //Function A
UpdateDataBasic(element); //Function B
}, 60 * 5 * 1000);
}
你能帮我吗?
最佳答案
这是setInterval的一个好用例,我们只需定义它在(5分钟)处运行的时间间隔,并将其添加到事件循环中即可。知道了这一点,我们可以使用计数器来跟踪传递的间隔数,从而采取一些不同的方法,这使我们能够处理每个存储桶。
然后,一旦间隔数达到GTE数组的长度,我们就知道所有数组都已处理,可以清除间隔以阻止其继续。
const everyTen = ['a', 'b', 'c'];
const updateDataPost = (data) => {
console.log(`updateDataPost ${data}`);
};
const updateDataBasic = (data) => {
console.log(`updateDataBasic ${data}`);
};
let intervalsPassed = 0;
const interval = setInterval(() => {
const currentBucket = everyTen[intervalsPassed++];
updateDataPost(currentBucket);
updateDataBasic(currentBucket);
if (intervalsPassed >= everyTen.length) {
console.log('no more buckets, stopping interval')
clearInterval(interval);
}
}, 1000 * 60 * 5);
输出:
"updateDataPost a"
"updateDataBasic a"
"updateDataPost b"
"updateDataBasic b"
"updateDataPost c"
"updateDataBasic c"
这是一个可使用的JS容器,我将设置为5秒以使其更快地测试https://jsbin.com/fafewelufi/edit?js,console
关于javascript - 如何在JavaScript中每5分钟调用一次函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52193889/