一尘不染

等待承诺链有什么问题?

javascript

我正在开发Angular 6应用程序,并且被告知以下内容是反模式:

await someFunction().then(result => {
    console.log(result);
});

我意识到等待承诺链毫无意义。如果someFunction()返回Promise,则在等待时不需要Promise链。你可以这样做:

const result = await someFunction();
console.log(result);

但是有人告诉我,等待一个诺言链可能会导致错误,或者会破坏我的代码。如果上面的第一个代码段与第二个代码段执行相同的操作,那么使用哪个代码段有什么关系呢。第一段不会引入第二段带来的危险?


阅读 228

收藏
2020-04-25

共1个答案

一尘不染

在后台,异步/等待只是承诺。

也就是说,当您有一些类似于以下代码的代码:

const result = await myAsyncFunction();   
console.log(result):

那和写完全一样:

myAsyncFunction().then(data => {
   const result = data; 
   console.log(result); 
});

当时的原因-您不应该混合使用异步/等待和.then链-是因为它令人困惑。

最好只选择一种样式并坚持下去。

当您选择一个时-您最好也选择异步/等待-这更容易理解。

2020-04-25