如何在JavaScript中的`Promise.all`中使用`Array#map`

时间:2017-04-16 06:31:01

标签: javascript promise

我正在尝试使用一系列项目创建char testResponse[2] = {0x01, 0x90}; unsigned int tmp = (unsigned)testResponse[0] << 8 | (unsigned)testResponse[1]; short result = tmp; // implementation-defined behaviour printf("%d\n", result); // 400 。所以,如果我像这样创建它可以正常工作

Promise.all

如果我尝试像这样创建Promise.all([ Query.getStuff(items[0]), Query.getStuff(items[1]) ]).then(result => console.log(result)) ,则无效

Promise.all

Promise.all([ items.map(item => Query.getStuff(item)) ]).then(result => console.log(result)) 块在then之前运行。我错过了什么?

1 个答案:

答案 0 :(得分:19)

你应该写

Promise.all(items.map(...))

而不是

Promise.all([ items.map(...) ])

Array#map返回一个数组,这意味着您最初编写代码的方式,实际上是将多维数组传递给Promise.all - 如[ [promise1, promise2, ...] ] - 而不是预期的 - 维度版本[promise1, promise2, ...]

<小时/>

修订代码:

Promise.all(
    items.map(item => Query.getStuff(item))
).then(result => console.log(result))