摘要:異步編程是一種編程的設(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使用async和await兩個關(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
調(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
摘要:標(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ù)的語法糖。 ...
摘要:交換元素利用數(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...
摘要:以往的異步方法無外乎回調(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處理異步的...
摘要:以往的異步方法無外乎回調(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處理異步的...
閱讀 2237·2021-09-24 10:31
閱讀 3888·2021-09-22 15:16
閱讀 3409·2021-09-22 10:02
閱讀 1024·2021-09-22 10:02
閱讀 1838·2021-09-08 09:36
閱讀 1982·2019-08-30 14:18
閱讀 617·2019-08-30 10:51
閱讀 1877·2019-08-29 11:08