前端非同步的解釋-概念性

muddyrain 發表於 2021-01-19

Promise 三種狀態

  • pending resolved rejected

  • pending —> resolved 或 pending —> rejected

  • 變化不可逆

Promise 狀態表現

  • pending 狀態,不會觸發 then 和 catch

  • resolved 狀態,會觸發後續的 then 回撥函式

  • rejected 狀態,會觸發後續的 catch 回撥函式

thencatch 改變狀態

  • then 正常返回 resolved , 裡面有報錯則返回 rejected

  • catch 正常返回 resolved,裡面有報錯則返回 rejected

asyncawait

  • 非同步回撥 callback hell

  • Promise then catch 鏈式呼叫,但也是基於回撥函式

  • async/await是同步語法,徹底消滅回撥函式

async/awaitPromise 的關係

  • async/await是消滅非同步回撥的終極武器

  • 但和 Promise並不互斥

  • 反而,倆者相輔相成

  • 執行async函式,返回的是 Promise

  • await 相當於 Promise 的 then

  • try...catch 可捕獲異常,代替了 Promisecatch

非同步本質

  • async / await 是消滅非同步回撥的終極武器

  • JS還是單執行緒,還得是有非同步,還得是基於event loop

  • async/ await 只是一個語法糖

本作品採用《CC 協議》,轉載必須註明作者和本文連結