這篇文章原來的 標題 是 《我 反對 使用 async await》, html
但通過後來的一些研究, 發現 async await 是 良性 的, 因此 我把 標題 改爲了 《我 支持 使用 async await》,程序員
詳情請看 《無阻塞 編程模型》 http://www.javashuo.com/article/p-qxtbtyjk-ck.html 。編程
如下是 「反對」 的原文 。async
我 反對 使用 C# 的 async await 。性能
我 強調一點, 程序員 應該對 程序 有 控制感 。測試
過分的 控制反轉 會 削弱 程序員 對 程序 的 控制感 。spa
async await 通過 編譯器 處理的 代碼 和 程序員 寫 的 代碼 是 不同的, 或者說, async await 的 執行過程 對 程序員 是 不肯定 的 。線程
這使 程序員 極大的 喪失了 對 程序 的 控制感 。htm
有個問題, 有沒有 async await 和 線程(線程池) 的 性能對比 測試報告 ?blog
Javascript 是 單線程 模型, 不能 Sleep(), 也不能 Wait(), 如今看起來, async await 好像把 Javascript 的 形態 當成了 進化 的 高級形態 。
或者說, async await 以 Javascript 單線程 模型 爲 目標, 帶領 C# 向 Javascript 進化 。
So ……
我提倡 用 t.Wait() 的 方式 調用 Async 方法, 好比 :
Task<T> t = FooAsync();
t.Wait();
簡單明瞭 。