node.js – 如何使用Q.all()与复数数组的承诺?

考虑我有一系列的对象和承诺,像:

[{
    a: 1
},{
    a: 4
},{
    promiseSend: [Function],valueOf: [Function]
},valueOf: [Function]
}]

现在当调用I Q.all(arr)并返回当前()中的对象值时,没有任何事情发生,我的数组还包含promise对象.有没有办法使用Q.all()和这样一个复杂的数组?

解决方法

这就是Q应该是如何工作的.
获取所有的值,而不是承诺,你可以使用.spread():

Q.all([a,b]).spread(function (a,b) {
    return a + b;
});

spread()回调的每个参数将按照每个承诺的顺序排列.

如果你认为你会在这样的数组中有很多的承诺,那么循环通过then()中提供的参数,并用它的值替换promises:

Q.all(promises).then(function(result) {
    for (var i = 0,len = result.length; i < len; i++) {
        if (Q.isPromise(result[i])) {
            result[i] = result[i].valueOf();
        }
    }

    // Next step!
});

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...