我已經看到幾個 linter 標記了這種行為,但我想知道這是否不是您使用承諾的部分原因:
const promise = myFn() //do other stuff const result = myOtherFn(await promise)
錯誤:應等待或捕獲承諾
那麼這是一個錯誤的程式碼嗎?如果是這樣,為什麼?
P粉2957286252024-04-02 00:25:25
是的,這是 await
的不尋常用法,也是可能導致應用程式崩潰的不良做法。
通常你會立即 await
的承諾:
const value = await myFn() // do other stuff const result = myOtherFn(value);
不立即 await
ing 承諾的問題是,當 // do other stuff
正在運行時,當它因錯誤而拒絕時,您會錯過。如果其他東西是異步的,你可能await
太晚了,如果其他東西本身拋出異常,你永遠不會await
它,在這兩種情況下,這都會導致promise
未經處理的拒絕,這將使你的應用程式崩潰。另請參閱等待多個並發等待操作和< a href="https://stackoverflow.com/questions/45285129/any-difference- Between-await-promise-all-and-multiple-await">await Promise.all() 和多個等待之間有什麼區別? 一个>.