Node.js中的异步和Q Promise

dzm

在nodejs中使用Q库和异步库。

这是我的代码示例:

async.each(items, cb, function(item) {

 saveItem.then(function(doc) {
    cb();
 });

}, function() {

});

saveItem是一个承诺。运行此命令时,我总是得到cb is undefined,我想then()没有访问权限。任何想法如何解决这个问题?

保罗·穆格尔

您的问题不在于承诺,而在于您对的使用async

async.each(items, handler, finalCallback)适用handleritems数组的每个项目handler函数是异步的,即传递给回调函数,函数必须在完成工作后调用。完成所有处理程序后,将调用最终回调。

这是解决当前问题的方法:

var handler = function (item, cb) {
  saveItem(item)
  .then(
    function () { // all is well!
        cb();
    },
    function (err) { // something bad happened!
        cb(err);
    }
  );
}

var finalCallback = function (err, results) {
  // ...
}

async.each(items, handler, finalCallback);

但是,您无需使用async此特定代码段:仅使用promises就可以很好地完成此工作,尤其是使用Q.all()

// Create an array of promises
var promises = items.map(saveItem);

// Wait for all promises to be resolved
Q.all(promises)
.then(
    function () { // all is well!
        cb();
    },
    function (err) { // something bad happened!
        cb(err);
    }
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Node.js中与q和Promise有点混淆

来自分类Dev

在Node.js中与q和Promise有点混淆

来自分类Dev

Node.js与Promise并行

来自分类Dev

JavaScript Promise和Node.js

来自分类Dev

Promise 在 Node JS 中不起作用

来自分类Dev

Q Promise Node.js如何循环解析

来自分类Dev

Node.js没有执行异步的Promise函数

来自分类Dev

Node.js | Bluebird Promise 不会异步执行任务

来自分类Dev

如何从Q Node Promise返回变量?

来自分类Dev

如何在node.js中实际使用Q promise?

来自分类Dev

将Node异步功能转换为Promise时如何使用Q库?

来自分类常见问题

Node.js-从promise.then()内部返回

来自分类Dev

Node JS Async Promise。所有问题

来自分类Dev

Node.js-从promise.then()内部返回

来自分类Dev

解决promise node.js数组

来自分类Dev

使用node.js,流和promise下载文件

来自分类Dev

如何在Node.js中从Promise中获取价值

来自分类Dev

从Node.js中的Promise(Bluebird)返回值

来自分类Dev

使用Bluebird在Promise中包装Node.js回调

来自分类Dev

使用Promise处理Node.js + Express中的错误

来自分类Dev

如何在Node.js的Promise中完成执行?

来自分类Dev

Promise链未在Node.js中执行

来自分类Dev

TypeError:promise.then(...)。then(...)。then(...)。then(...)。catch不是Node Js中的函数

来自分类Dev

在node.js中返回延迟的嵌套promise

来自分类Dev

在while(JavaScript / Node.js)中如何使用Promise?

来自分类Dev

在Node.js中执行作业后返回Promise

来自分类Dev

使用Promise重写Node.js中的Redis调用

来自分类Dev

Node.js中的Promise.all不调用then函数

来自分类Dev

返回新的Promise()在Node.js中不起作用