node编写定时任务,for循环只执行一遍的解决办法
在用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);
}
}
};
添加了這幾行代碼,問題就解決了,如果對這個錯誤有更好的解釋或者解決辦法,歡迎指出~~~
轉載于:https://www.cnblogs.com/sunflower-zy/p/10718067.html
總結
以上是生活随笔為你收集整理的node编写定时任务,for循环只执行一遍的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这里人气比较旺诶,解忧杂货铺!?
- 下一篇: 一台新的挖掘机多少钱一台?