84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
我已经看到几个 linter 标记了这种行为,但我想知道这是否不是您使用承诺的部分原因:
const promise = myFn() //do other stuff const result = myOtherFn(await promise)
错误:应等待或捕获承诺
那么这是一个错误的代码吗?如果是这样,为什么?
是的,这是 await 的不寻常用法,也是可能导致应用程序崩溃的不良做法。
await
通常你会立即 await 的承诺:
const value = await myFn() // do other stuff const result = myOtherFn(value);
不立即 awaiting 承诺的问题是,当 // do other stuff 正在运行时,当它因错误而拒绝时,您会错过。如果其他东西是异步的,你可能 await 太晚了,如果其他东西本身抛出异常,你永远不会 await 它,在这两种情况下,这都会导致 promise 未经处理的拒绝,这将使你的应用程序崩溃。另请参阅等待多个并发等待操作和await Promise.all() 和多个等待之间有什么区别?一个>.
// do other stuff
promise
是的,这是
await
的不寻常用法,也是可能导致应用程序崩溃的不良做法。通常你会立即
await
的承诺:不立即
await
ing 承诺的问题是,当// do other stuff
正在运行时,当它因错误而拒绝时,您会错过。如果其他东西是异步的,你可能await
太晚了,如果其他东西本身抛出异常,你永远不会await
它,在这两种情况下,这都会导致promise
未经处理的拒绝,这将使你的应用程序崩溃。另请参阅等待多个并发等待操作和await Promise.all() 和多个等待之间有什么区别?一个>.