亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Hack 的異步特性 async 和 await

Codeing_ls / 2769人閱讀

摘要:異步編程是一種編程的設計模式。異步編程最常用于讀寫。使用和兩個關鍵詞支持異步編程。異步函數(shù)可能會貪婪地執(zhí)行異步函數(shù)體部分。在聲明以外的執(zhí)行不會被掛起。異步編程框架會記錄所有應該完成的異步操作。

異步編程是一種編程的設計模式。它允許多個獨立的任務協(xié)同工作,在同一線程內(nèi)傳遞控制權(quán)。從最小依賴和任務交互的角度來看,這些任務是相互獨立的。異步編程最常用于I/O讀寫。

Hack使用asyncawait兩個關鍵詞支持異步編程。async聲明異步函數(shù)。await會掛起一個異步函數(shù)的執(zhí)行,直到await代表的異步操作的結(jié)果可以訪問。await可以使用的函數(shù)的返回值為實現(xiàn)了Awaitable的對象。

 {
  if ($a === 0) {
    return null;
  }

  $bar = await gen_bar($a);
  if ($bar !== null) {
    return $bar->getFoo();
  }

  return null;
}

async function gen_bar(int $a): Awaitable {
  if ($a === 0) {
    return null;
  }

  return new Bar();
}


gen_foo(4);

gen_foo()前有async關鍵字,因此它是一個異步函數(shù)。異步函數(shù)總是返回一個實現(xiàn)了Awaitable的對象(通常具體的實現(xiàn)是WaitHandle,不過幾乎在所有場合都推薦使用Awaitable接口。

調(diào)用gen_foo()會引入一些有趣的屬性,這些都是異步函數(shù)特有的。異步函數(shù)可能會貪婪地執(zhí)行異步函數(shù)體部分。調(diào)用gen_bar()首先返回一個Awaitable對象,這個對象在執(zhí)行之中可能完成,也可能不完成。如果它沒有完成,那么gen_foo()會掛起執(zhí)行,否則gen_foo()會析構(gòu)結(jié)果并繼續(xù)貪婪執(zhí)行。在await聲明以外的執(zhí)行不會被掛起。異步編程框架會記錄所有應該完成的異步操作。


原文 Hack Language Reference -- async and await
翻譯 SegmentFault

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/20705.html

相關文章

  • ES6 系列之我們來聊聊 Async

    摘要:標準引入了函數(shù),使得異步操作變得更加方便。在異步處理上,函數(shù)就是函數(shù)的語法糖。在實際項目中,錯誤處理邏輯可能會很復雜,這會導致冗余的代碼。的出現(xiàn)使得就可以捕獲同步和異步的錯誤。如果有錯誤或者不嚴謹?shù)牡胤?,請務必給予指正,十分感謝。 async ES2017 標準引入了 async 函數(shù),使得異步操作變得更加方便。 在異步處理上,async 函數(shù)就是 Generator 函數(shù)的語法糖。 ...

    Songlcy 評論0 收藏0
  • ES67個實用技巧

    摘要:交換元素利用數(shù)組解構(gòu)來實現(xiàn)值的互換調(diào)試我們經(jīng)常使用來進行調(diào)試,試試也無妨。提供了完整的環(huán)境,并且支持自定義域名指向,動態(tài)計算資源調(diào)整,可以完成各種應用的開發(fā)編譯與部署。 7 Hacks for ES6 Developers Hack #1 交換元素 利用數(shù)組解構(gòu)來實現(xiàn)值的互換 let a = world, b = hello [a, b] = [b, a] console.log(a...

    CastlePeaK 評論0 收藏0
  • ES6 Async/Await 完爆Promise6個原因

    摘要:以往的異步方法無外乎回調(diào)函數(shù)和。當然,對這個新特性也有一定的擔心,體現(xiàn)在他使得異步代碼變的不再明顯,我們好不容易已經(jīng)學會并習慣了使用回調(diào)函數(shù)或者來處理異步。 自從Node的7.6版本,已經(jīng)默認支持async/await特性了。如果你還沒有使用過他,或者對他的用法不太了解,這篇文章會告訴你為什么這個特性不容錯過。本文輔以大量實例,相信你能很輕松的看懂,并了解Javascript處理異步的...

    shevy 評論0 收藏0
  • ES6 Async/Await 完爆Promise6個原因

    摘要:以往的異步方法無外乎回調(diào)函數(shù)和。當然,對這個新特性也有一定的擔心,體現(xiàn)在他使得異步代碼變的不再明顯,我們好不容易已經(jīng)學會并習慣了使用回調(diào)函數(shù)或者來處理異步。 自從Node的7.6版本,已經(jīng)默認支持async/await特性了。如果你還沒有使用過他,或者對他的用法不太了解,這篇文章會告訴你為什么這個特性不容錯過。本文輔以大量實例,相信你能很輕松的看懂,并了解Javascript處理異步的...

    W4n9Hu1 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<