成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Hack 的異步特性 async 和 await

Codeing_ls / 2714人閱讀

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

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

Hack使用asyncawait兩個關(guān)鍵詞支持異步編程。async聲明異步函數(shù)。await會掛起一個異步函數(shù)的執(zhí)行,直到await代表的異步操作的結(jié)果可以訪問。await可以使用的函數(shù)的返回值為實(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關(guān)鍵字,因此它是一個異步函數(shù)。異步函數(shù)總是返回一個實(shí)現(xiàn)了Awaitable的對象(通常具體的實(shí)現(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í)行不會被掛起。異步編程框架會記錄所有應(yīng)該完成的異步操作。


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

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

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

相關(guān)文章

  • ES6 系列之我們來聊聊 Async

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

    Songlcy 評論0 收藏0
  • ES67個實(shí)用技巧

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

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

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

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

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

    W4n9Hu1 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<