node.js - NodeJS 回调序列

标签 node.js asynchronous underscore.js promise

各位, 我有以下函数,并且想知道仅当数据库操作完成所有项目时调用回调()的正确方法是什么:

function mapSomething (callback) {
    _.each(someArray, function (item) {
        dao.dosomething(item.foo, function (err, account) {
            item.email = account.email;
        });
    });
    callback();
},

我需要的是迭代 someArray 并为每个元素进行数据库调用。替换数组中的所有项目后,我只需要调用回调。当然,回调现在位于错误的位置

谢谢!

最佳答案

按照您当前的方式,回调会在任何(异步)任务完成之前执行。

async模块有一个 each() 允许最终回调:

var async = require('async');

// ...

function mapSomething (callback) {
  async.each(someArray, function(item, cb) {
    dao.dosomething(item.foo, function(err, account) {
      if (err)
        return cb(err);
      item.email = account.email;
      cb();
    });
  }, callback);
}

关于node.js - NodeJS 回调序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25755072/

相关文章:

javascript - 使用 underscore.js 和 Backbone.marionette 模板化 Bootstrap Carousel

Node.js 如何将 req.body 转换为字符串

javascript - Node 中的动态函数调用(无框架)

javascript - 从同一异步函数加载数据,多次调用而无需 promise

multithreading - F#:在异步返回之前 SwitchToThreadPool 的目的

javascript - _.each 的回调函数?

javascript - 如何在使用 require 时找到 .js 文件的正确路径

node.js - 将 amazon s3 与 electron-builder 的自动更新程序一起使用

javascript - 将回调更改为 promise 链

javascript - 下划线模板 : passing variables from a parent template to a child template