为什么这些承诺没有兑现?



promise.all内时需要等待吗?这还能有什么问题?

(async => {
const result = Promise.all(
await domainContext.get1(id),
await domainContext.get2(id)
).then(r => r);
})();

我期待:

result = [get1_value, get2_value]

我得到 :

'{}'

Promise.all期望数组作为单个参数,而不是其参数中的 Promise 列表。另外,如果您使用的是Promise.all,请不要await里面 - 这违背了目的,因为那样您将解析值数组传递给Promise.all而不是传递给它一个等待的 Promise数组。另外,要定义一个没有参数的异步函数,你需要在async后面添加一个空参数列表:

const get1 = () => Promise.resolve('get1');
const get2 = () => Promise.resolve('get2');
(async () => {
const result = await Promise.all([
get1(),
get2(),
]);
console.log(result);
})();

您还可以awaitresult数组中的每个项目,如下所示:

const get1 = () => Promise.resolve('get1');
const get2 = () => Promise.resolve('get2');
(async () => {
const result = [
await get1(),
await get2(),
];
console.log(result);
})();

这可能是您尝试执行的操作,但请注意,这会导致每个项目以串行方式请求,而不是并行请求。

最新更新