我正在处理一些Azure功能-我正在从CosmosDB中读取一些文档,并对这些文档执行一些操作。
我遇到了以下代码,但是并不太了解。
then()
,不仅可以删除它,还可以直接在resolve()
部分中执行我想要执行的任何操作的代码吗?所以:
const promises = documents.map(document =>
Promise.resolve().then(async () => {
// Do some stuff on the document
})
);
return Promise.all(promises).then();
vs:
const promises = documents.map(document =>
Promise.resolve(async () => {
// Do some stuff on the document
})
);
return Promise.all(promises).then();
答案 0 :(得分:4)
实际上,您都不应该使用任何一种;代替
const promises = documents.map(async document => {
// Do some stuff on the document
});
您的第一个代码段不必要地构造了立即解析的Promise,仅将功能链接到该Promise。这推迟了计算的异步进行,这可能是有意为之,但应在注释中提及-并且为此只使用async document => { await; … }
,避免将两种promise样式混在一起。
您的第二个代码段构建了一个可以实现功能的诺言-这不是您想要的。