Q Promise Node.js如何循环解析

纳兹里尔·福迪(Nazril Faudi)

我有用nodejs编写的代码让我感到困惑 Q Promises

theFunction()
.then(function(data) {
    var deferred = Q.defer()
    var result = [];
    for(i=0; i < data.length; i++) {

        secondFunc(data.item)
        .then(function(data2) {
            data.more = data2.item
        });
        result.push(data);

    }

    deferred.resolve(result);
    deferred.promise();

});

我希望循环内的第二个函数中的数据可以推入结果

所以我以前的数据是这样的

[
    {
        id: 1,
        item: 1,
        hero: 2
    },
    {
        id: 1,
        item: 1,
        hero: 2
    }
]

像这样

[
    {
        id: 1,
        item: 1,
        hero: 2,
        more: {
            list: 1
        }
    },
    {
        id: 1,
        item: 1,
        hero: 2,
        more: {
            list: 4
        }

    }
]

我尝试了几种方法,首先输入命令deferred.resolve();。循环中仅显示1个数据的语句有什么解决方案?

本杰明·格伦鲍姆(Benjamin Gruenbaum)

而不是deferred.resolve()在将立即解决的数组上使用Q.all而是使用等待一个promise数组:

theFunction()
.then(function(data) {
    var result = [];
    for(var i=0; i < data.length; i++) (function(i){
        result.push(secondFunc(data[i].item)
        .then(function(data2) {
            data[i].more = data2.item;
            return data[i];
        }));
    })(i); // avoid the closure loop problem
    return Q.all(result)
});

甚至更好:

theFunction()
.then(function(data) {
    return Q.all(data.map(function(item)
        return secondFunc(item)
        .then(function(data2) {
            item.more = data2.item;
            return item;
        });
    });
});

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Q Node Promise返回变量?

来自分类Dev

Node.js中的异步和Q Promise

来自分类Dev

在Node.js中使用Q.js Promise进行循环的正确方法

来自分类Dev

如何在node.js中用Q promise重写一系列条件语句?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何将参数传递给Node的Q库的(denodeify)Promise处理程序

来自分类Dev

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

来自分类Dev

如何在ExpressJS中使用Q Promise?

来自分类Dev

如何使用Q.js正确链接条件(?)Promise

来自分类Dev

Node.js与Promise并行

来自分类Dev

Q和Promise链接

来自分类Dev

Node.js Q承诺多个参数

来自分类Dev

在Node JS中限制Q许诺并发

来自分类Dev

Node.js Q调用多个参数

来自分类Dev

如何使用Java中的Q顺序运行Promise?

来自分类Dev

如何将对象数组映射到Q Promise数组

来自分类Dev

如何在Q Promise中显示未处理错误的异常

来自分类Dev

如何按顺序使用angularjs $ q链接promise?

来自分类Dev

如何将对象数组映射到Q Promise数组

来自分类Dev

如何使用Q.Promise <string>作为字符串?

来自分类Dev

如何使用Q.Promise <string>作为字符串?

来自分类Dev

简单的promise队列:q.all在递归promise解析之前解决

来自分类Dev

Node JS:Promise 解析值为“未定义”

来自分类Dev

如何在Node.js中添加promise.all在循环中顺序化findOrCreate?

来自分类Dev

如何在Node.js中解析可变数量的Promise

来自分类常见问题

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

来自分类Dev

Node JS Async Promise。所有问题