在promise.all
中,是否需要等待?还有什么不对吗?
(async => {
const result = Promise.all(
await domainContext.get1(id),
await domainContext.get2(id)
).then(r => r);
})();
我希望:
result = [get1_value, get2_value]
我得到了:
'{}'
答案 0 :(得分:7)
Promise.all
期望 array 作为单个参数,而不是其参数中的Promises列表。另外,如果您使用的是Promise.all
,请不要在内部使用await
,因为这样做会破坏目的,因为这样会将 resolved值数组传递给{ {1}}而不是将其传递给一个 Promise 数组来等待。另外,要定义不带参数的异步函数,您需要在Promise.all
之后添加一个空参数列表:
async
您还可以const get1 = () => Promise.resolve('get1');
const get2 = () => Promise.resolve('get2');
(async () => {
const result = await Promise.all([
get1(),
get2(),
]);
console.log(result);
})();
数组await
中的每个项目,如下所示:
result
这可能就是您要尝试执行的操作,但是请注意,这会导致在 serial (而不是并行)中请求每个项目。