我正在开发Angular 6应用程序,并且被告知以下内容是反模式:
await someFunction().then(result => { console.log(result); });
我意识到等待承诺链毫无意义。如果someFunction()返回Promise,则在等待时不需要Promise链。你可以这样做:
const result = await someFunction(); console.log(result);
但是有人告诉我,等待一个诺言链可能会导致错误,或者会破坏我的代码。如果上面的第一个代码段与第二个代码段执行相同的操作,那么使用哪个代码段有什么关系呢。第一段不会引入第二段带来的危险?
在后台,异步/等待只是承诺。
也就是说,当您有一些类似于以下代码的代码:
const result = await myAsyncFunction(); console.log(result):
那和写完全一样:
myAsyncFunction().then(data => { const result = data; console.log(result); });
当时的原因-您不应该混合使用异步/等待和.then链-是因为它令人困惑。
.then
最好只选择一种样式并坚持下去。
当您选择一个时-您最好也选择异步/等待-这更容易理解。