Pause/Timeout 在 async.forEach NodeJS 中
Pause/Timeout in async.forEach NodeJS
假设 fruits 是一个包含 4 个项目的数组
我所期望的是下面的代码将打印水果,每个水果之间有 4 秒的延迟。
var fruits = ['blueberries', 'strawberries', 'mango', 'peaches'];
async.forEach(fruits, functions(fruit, next) {
setTimeout(function() {
console.log(fruit);
}, 4000);
})
实际行为是等待 4 秒,然后打印整个列表。 :\ 有人知道如何实现我的预期行为吗?
async.forEach
运行s 并行遍历数组,意思是它会立即运行数组中每一项的函数,然后当它们都执行回调时,将调用回调函数(您未能包含)。
在你的情况下,你想 运行 一次一个地遍历数组,或者在一系列中,所以你需要 .eachSeries
方法。
var fruits = ['blueberries', 'strawberries', 'mango', 'peaches'];
async.eachSeries(fruits, function (fruit, next) {
setTimeout(function() {
console.log(fruit);
next(); // don't forget to execute the callback!
}, 4000);
}, function () {
console.log('Done going through fruits!');
});
假设 fruits 是一个包含 4 个项目的数组 我所期望的是下面的代码将打印水果,每个水果之间有 4 秒的延迟。
var fruits = ['blueberries', 'strawberries', 'mango', 'peaches'];
async.forEach(fruits, functions(fruit, next) {
setTimeout(function() {
console.log(fruit);
}, 4000);
})
实际行为是等待 4 秒,然后打印整个列表。 :\ 有人知道如何实现我的预期行为吗?
async.forEach
运行s 并行遍历数组,意思是它会立即运行数组中每一项的函数,然后当它们都执行回调时,将调用回调函数(您未能包含)。
在你的情况下,你想 运行 一次一个地遍历数组,或者在一系列中,所以你需要 .eachSeries
方法。
var fruits = ['blueberries', 'strawberries', 'mango', 'peaches'];
async.eachSeries(fruits, function (fruit, next) {
setTimeout(function() {
console.log(fruit);
next(); // don't forget to execute the callback!
}, 4000);
}, function () {
console.log('Done going through fruits!');
});