Promise.resolve()。then(vs Promise.resolve(

时间:2019-05-21 08:20:49

标签: typescript promise azure-functions azure-cosmosdb

我正在处理一些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();

1 个答案:

答案 0 :(得分:4)

实际上,您都不应该使用任何一种;代替

const promises = documents.map(async document => {
    // Do some stuff on the document
});

您的第一个代码段不必要地构造了立即解析的Promise,仅将功能链接到该Promise。这推迟了计算的异步进行,这可能是有意为之,但应在注释中提及-并且为此只使用async document => { await; … },避免将两种promise样式混在一起。

您的第二个代码段构建了一个可以实现功能的诺言-这不是您想要的。