我已经看到几个 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() 和多个等待之间有什么区别?一个>.