gpt4 book ai didi

javascript - 在bluebird中,并发执行多个promise数组

转载 作者:行者123 更新时间:2023-11-30 11:36:53 25 4
gpt4 key购买 nike

我想做这样的事情:

given:
a = [a bunch of promises]
b = [another bunch of promises]
c = [more promises]

do:
return Bluebird.all(a, b, c).spread((resolved_a, resolved_b, resolved_c) => {
// do stuff
})

这似乎行不通。 Promise.all 在给定多个单独的 promise 或单个 promise 数组时工作正常。

谢谢!

@安迪加斯克尔,

使用传播版本,我没有得到我想要的行为。鉴于:

a = an array with three promises that resolve to 'a', 'b', and 'c'
b = like a but resolves 'd', 'e', 'f'
d = like a but resolves 'g', 'h', 'i'

return Bluebird.all(a, b, c,).spread((ra, rb, rc) => {
console.log(ra) // 'a', 'b', 'c'
console.log(rb) // 'd', 'e', 'f'
console.log(rc) // 'g', 'h', 'i'
}

我想在 .then() 中将已解决的 promise 分开。扩展或收缩数组使它们变平,因此将已解决的 promise 组合到一个数组中。

也许这是不可能的?

@tincot

您的方法几乎就绪,已解决的 promise 结构完美,但似乎(我认为,还没有完全说服自己)并发执行。

最佳答案

使用Array.concatspread创建一个新数组。

concat 版本看起来像这样:

Bluebird.all(a.concat(b).concat(c))

和传播版本:

Bluebird.all([...a, ...b, ...c])

关于javascript - 在bluebird中,并发执行多个promise数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44087848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com