如何使用下述条件将变量dinamic_delay替代值?
var emails = []; // array
var number = 5;
var count = 0;
var dinamic_delay;
for (i = 0; i < emails.length; i++) {
count++;
if (count == number) {
dinamic_delay = 3000;
count = 0; // resset count
} else {
dinamic_delay = 500;
}
setTimeout(function (i) {
sendemail(email[i]);
}, dinamic_delay * i, i);
}
我不得不提醒自己setTimeout是如何工作的:
setTimeout(myfunction((, 5000( - 从现在起至少 5000 毫秒后调用函数(执行此代码时(
setTimeout(myfunction((, 5000( - 从现在起至少 5000 毫秒后调用函数(当执行此代码时(
换句话说,在调用 B 之前没有自动的 10,000 毫秒,例如 6000 毫秒
如果你想定期调用事物,setInterval 很有用。
下面的示例显示控制台消息 3、3、3、3、10 秒.log并重复,直到最后一封电子邮件。
const bigDelay_c = 10000; //secs
const smallDelay_c = 3000; //secs
const totalEmails_c = 18; //total to process
var totalEmailsProcessed = 0; //running total
var timerId = 0;
timerId = setInterval(alertFunc, smallDelay_c);
function alertFunc() {
//sendEmail logic here
var currentdate = new Date();
totalEmailsProcessed++;
console.log(totalEmailsProcessed, currentdate.getHours() + ":" +
currentdate.getMinutes() + ":" + currentdate.getSeconds());
clearInterval(timerId); //stop interval repeating
//stop if all emails have been processed
if (totalEmailsProcessed >= totalEmails_c) {
console.log('all emails processed');
return;
}
//5th item in every 5 get bigDelay_c
if (totalEmailsProcessed % 5 == 4)
timerId = setInterval(alertFunc, bigDelay_c);
else
timerId = setInterval(alertFunc, smallDelay_c);
}