我使用node-schedule模块过程中遇到个问题,在定时任务中循环一个数组order,数组长度只有2,每循环一次就会在数据表中创建一条数据,按道理讲应该只创建两条数据,但是这个数组在定时任务里面循环了两遍创建了四条数据。如果把for循环放到定时任务scheduleJob外面,这个数组只会被循环一遍,求解。
代码如下:
schedule.scheduleJob('30 50 15 * * *',function(){
console.log('定时任务');
for(let i=0;i<order.length;i++){
console.log("for循环");
console.log('i:',i);
const finalPrice = order[i].finalPrice;
const earning = countEarning(finalPrice,selfRate);
const divided = countEarning(finalPrice,uplineRate);
console.log("earning:",earning);
console.log("divided:",divided);
const orderearnMsg = {
uid: order[i].uid,
oid: order[i].orderId,
price: order[i].finalPrice,
earning: earning,
divided: divided,
year: year,
month: month,
day: day,
time: time
}
Orderearn.create(orderearnMsg).then(function(orderearnRes){
console.log('create success');
})
}
})
是我对这个定时模块理解不够,我为了调用我写的定时任务,使用了setinterval进行测试,每15秒调用一次,我以为无论调用频率多高定时任务也都只会在某一秒执行,没想到一秒内也会执行好多次(手动捂脸),所以导致for循环执行多次,怪小弟学艺不精……