繁体   English   中英

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

[英]How to use Q.all() with complex array of promises?

考虑我有一系列对象和承诺,例如:

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

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

这就是Q应该如何运作。
要获得所有值,而不是承诺,您可以使用.spread()

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

spread()回调的每个参数都是每个promise的结果。

如果你认为你在这样的数组中有很多的承诺,那么循环通过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!
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM