如何使用NodeJS Async(https://caolan.github.io/async/)作为正常for-cycle?
for(var i = 0; i < 100; i++){
doSomething();
}
我需要串行流但是正常的for-cycle不等到动作结束。
我对ES6解决方案持开放态度,如果有的话。
答案 0 :(得分:1)
我相信你总能做到这样的事情:
function asyncWhile(condition, action, ctx) {
const whilst = function(data) {
return condition.call(ctx, data) ?
Promise.resolve(action.call(ctx, data)).then(whilst) :
data;
}
return whilst();
}
let i = 1
asyncWhile(
() => {
if (i <= 100) {
i += 1
return true
}
return false
},
() => {
console.log(`iteration ${i}`)
},
)
答案 1 :(得分:1)
您可以尝试使用ES6中的Async/Await,它在许多标准中都是更清晰和常见的共享。此外,您不需要第三方的任何依赖
$ bash datefind.sh
find: Can't parse date/time: 1483743420
1484348640
1484953920
1485559200
1486164480
1486769820
答案 2 :(得分:0)
我发现了使用until
中的async
函数的另一种方式:
var i = 0;
var max = 100;
async.until(() => {
i++;
return i === max-1;
}, function (callback) {
//doMagic()
callback();
}, function () {
console.log("Finished");
});