微軟在Edge預覽版中支持Async/Await特性

jopen 9年前發布 | 7K 次閱讀 Edge

 

即將到來的ES 2016中有一個async/await特性,微軟瀏覽器Edge目前 已支持 這一特性,在Edge最新的預覽版中仍需開啟實驗性標志位才能進一步體驗,但是想要在未來被廣泛接受,走出這一步至關重要。

JavaScript天生是異步的,功能非常強大,但與此同時,開發者想要實現簡單的功能卻需要寫非常多的代碼,“ 回調地獄 ”是每一個開發者的傷痛。就在幾年前,開發者們開始擁抱 promise ,從此你就可以用一種更好的方法來處理異步代碼。promise先進的理念使得它成為ES6中不可或缺的一部份。

傳統的promise需要將所有的回調代碼塊連接起來, async/await特性 比promise更進一步,消除了這一方面的顧慮。在下面的示例中,getJsonAsync函數返回一個promise,代碼中async/await的作用是讓開發者以更偏向同步的方式來連接promise。

async function getServerData() {
  try {
    // 一旦promise被解決了,值就會被返回
    var json = await getJsonAsync();
  }
  catch (e) {
    // 如果promise被拒絕,代碼最終會在catch代碼塊中結束執行
  }
}

C#開發者可能會發現這樣的語法似曾相識:微軟在C# 5.0中引入了async/await特性,有了這個特性,開發者可以用同步的方式書寫異步代碼,不需要顯示地連接這么多代碼。async/await同樣也是JavaScript種的語法糖,大大減少使用樣板代碼的需求。

這個特性是Windows內部程序的一部份,在 build 10547 中可用。一定要在 about:flags 窗口中啟用“啟用實驗性JavaScript特性”標志位。

到目前為止,其它瀏覽器尚未支持這一特性。然而,轉譯器Babel早已將它作為 實驗性特性 實現了出來。其它瀏覽器馬上也會跟進,Mozilla正在緊鑼密鼓地 實現中

在瀏覽器中實現這個特性是它在ECMAScript標準進程中的一個里程碑,async/await目前處于“候選提案”的第3階段。對于一個提案而言,想要推進到最終的第4階段,必須要經過代碼實現的過程。Brian Terlson是async/await的擁護者,他在2015年紐約Qcon大會上圍繞這一特性以及TC39組織關于ES2016的進程規劃進行了一次演講。

查看英文原文: Microsoft Enables Async/Await in Edge Preview Build

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!