[英]Writing nested non-blocking loops in node.js
不太確定您的用例是什么。 Javascript正在阻塞,因為它是單線程的,因此必須先運行循環,然后再轉移到其他地方。
例如,您可以使用生成器在事件上運行每個迭代。
function* ticker() {
for(let i = 0; i < 10; i++)
for(let j = 0; i < 10; j++)
for(let k = 0; k < 10; k++)
yield[i, j, k];
}
const gen = ticker();
setInterval(() => console.log(gen.next().value), 500);
console.log('I am at the end (called straight away)');
您需要結合使用setImmediate
/ setTimeout
/ setImmediate
使用async.js庫。 async.each
僅用於業務流程,它本身不提供任何異步。
function getPerm(reducedWordList, callback) {
var sevenLtrWords = _.filter(reducedWordList, word => word.length == 7);
var fourLtrWords = _.filter(reducedWordList, word => word.length == 4);
async.each(sevenLtrWords, (i, cb) => {
async.each(sevenLtrWords, (j, cb) => {
async.each(fourLtrWords, (k, cb) => {
console.log(i + " " + j + " " + k);
setTimeout(cb, 0);
}, cb);
}, cb);
}, callback);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.