在用node编写定时任务时候,发现for循环只执行i=0这一次,就不接着循环执行了,下面贴上代码:
exports.task = async function(ctx){
let { app } = ctx,
resultArr1 = [],//查询的数据库数据
resultArr2 = [];//查询的数据库数据
// 循环插入数据
for(let i = 0,len = resultArr1.length;i < len;i++){
...
console.log(111);
//数据库插入数据(异步)
await ...
for(let j = 0,errorArrLen = resultArr2 .length;j < errorArrLen;j++){
...
console.log(222);
//数据库插入数据(异步)
await ...
}
}
};
resultArr1 ,resultArr2的长度均大于1,执行时会发现111,,222只输出一遍,发现代码里面写了await异步的用法,后来找到了解决办法,代码如下:
exports.task = async function(ctx){
let { app } = ctx,
resultArr1 = [],//查询的数据库数据
resultArr2 = [];//查询的数据库数据
// 循环插入数据
for(let i = 0,len = resultArr1.length;i < len;i++){
...
console.log(111);
//数据库插入数据(异步)
await ...
for(let j = 0,errorArrLen = resultArr2 .length;j < errorArrLen;j++){
var arr = resultArr2 [j];
(async function(arr){
...
console.log(222);
//数据库插入数据(异步)
await ...
})(arr);
}
}
};
添加了这几行代码,问题就解决了,如果对这个错误有更好的解释或者解决办法,欢迎指出~~~