【问题标题】:Pause/Timeout in async.forEach NodeJSasync.forEach NodeJS 中的暂停/超时
【发布时间】:2015-11-02 23:38:35
【问题描述】:

所以可以说水果是一个包含 4 个项目的数组 我的预期是下面的代码会打印水果,每个水果之间有 4 秒的延迟。

var fruits = ['blueberries', 'strawberries', 'mango', 'peaches'];
async.forEach(fruits, functions(fruit, next) { 
     setTimeout(function() {
          console.log(fruit);
     }, 4000);
})

实际行为是等待 4 秒,然后打印整个列表。 :\ 有人知道如何实现我的预期行为吗?

【问题讨论】:

  • 阅读文档。你想要async.series,你需要实际调用回调。
  • 对不起,我忘了添加回调,我只是在输入一个简单的例子。不过谢谢! :)

标签: node.js loops asynchronous node-async


【解决方案1】:

async.forEach 并行遍历数组,意味着它会立即为数组中的每一项运行该函数,然后当它们都执行回调时,将调用回调函数(您未能包含) .

在您的情况下,您希望一次遍历一个数组,或者以一系列方式遍历数组,因此您需要 .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!');
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多