whitglint
積分 3
不擅表達,簡單講一下跟 Python 不同之處:
語言原生支援(由 compiler 把 async method 轉成 state machine 改變執行方式)。比起 generator + decorator 更直覺更不容易寫錯,我常忘記加 decorator 或是有多個 decorator 時不知要加在第幾個,而 async 或 await 沒寫就是編譯錯誤。
方便利用多個核心。Caller 遇到必須等待的 task 就先離開,之後根據 SynchronizationContext 決定由哪個 thread 繼續執行 await 之後的程式,可以是 UI thread 也可以是 thread pool 裡的 thread。
Event loop 不是必要的。GUI 程式才需要利用 event loop 繼續執行 async method。
感想:用過 async/await 後真的無法再回去寫 callback hell 和 promise 什麼的了... XD