搜尋

首頁  >  問答  >  主體

在這種情況下使用await 被認為是一種不好的做法嗎?

我已經看到幾個 linter 標記了這種行為,但我想知道這是否不是您使用承諾的部分原因:

const promise = myFn()
//do other stuff
const result = myOtherFn(await promise)

錯誤:應等待或捕獲承諾

那麼這是一個錯誤的程式碼嗎?如果是這樣,為什麼?

P粉775723722P粉775723722232 天前421

全部回覆(1)我來回復

  • P粉295728625

    P粉2957286252024-04-02 00:25:25

    是的,這是 await 的不尋常用法,也是可能導致應用程式崩潰的不良做法。

    通常你會立即 await 的承諾:

    const value = await myFn()
    // do other stuff
    const result = myOtherFn(value);

    不立即 awaiting 承諾的問題是,當 // 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() 和多個等待之間有什麼區別? .

    回覆
    0
  • 取消回覆