我已經看到幾個 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() 和多個等待之間有什麼區別? 一个>.