摘要:異步編程是一種編程的設計模式。異步編程最常用于讀寫。使用和兩個關鍵詞支持異步編程。異步函數可能會貪婪地執行異步函數體部分。在聲明以外的執行不會被掛起。異步編程框架會記錄所有應該完成的異步操作。
異步編程是一種編程的設計模式。它允許多個獨立的任務協同工作,在同一線程內傳遞控制權。從最小依賴和任務交互的角度來看,這些任務是相互獨立的。異步編程最常用于I/O讀寫。
Hack使用async和await兩個關鍵詞支持異步編程。async聲明異步函數。await會掛起一個異步函數的執行,直到await代表的異步操作的結果可以訪問。await可以使用的函數的返回值為實現了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關鍵字,因此它是一個異步函數。異步函數總是返回一個實現了Awaitable
調用gen_foo()會引入一些有趣的屬性,這些都是異步函數特有的。異步函數可能會貪婪地執行異步函數體部分。調用gen_bar()首先返回一個Awaitable對象,這個對象在執行之中可能完成,也可能不完成。如果它沒有完成,那么gen_foo()會掛起執行,否則gen_foo()會析構結果并繼續貪婪執行。在await聲明以外的執行不會被掛起。異步編程框架會記錄所有應該完成的異步操作。
原文 Hack Language Reference -- async and await
翻譯 SegmentFault
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/20705.html
摘要:標準引入了函數,使得異步操作變得更加方便。在異步處理上,函數就是函數的語法糖。在實際項目中,錯誤處理邏輯可能會很復雜,這會導致冗余的代碼。的出現使得就可以捕獲同步和異步的錯誤。如果有錯誤或者不嚴謹的地方,請務必給予指正,十分感謝。 async ES2017 標準引入了 async 函數,使得異步操作變得更加方便。 在異步處理上,async 函數就是 Generator 函數的語法糖。 ...
摘要:交換元素利用數組解構來實現值的互換調試我們經常使用來進行調試,試試也無妨。提供了完整的環境,并且支持自定義域名指向,動態計算資源調整,可以完成各種應用的開發編譯與部署。 7 Hacks for ES6 Developers Hack #1 交換元素 利用數組解構來實現值的互換 let a = world, b = hello [a, b] = [b, a] console.log(a...
摘要:以往的異步方法無外乎回調函數和。當然,對這個新特性也有一定的擔心,體現在他使得異步代碼變的不再明顯,我們好不容易已經學會并習慣了使用回調函數或者來處理異步。 自從Node的7.6版本,已經默認支持async/await特性了。如果你還沒有使用過他,或者對他的用法不太了解,這篇文章會告訴你為什么這個特性不容錯過。本文輔以大量實例,相信你能很輕松的看懂,并了解Javascript處理異步的...
摘要:以往的異步方法無外乎回調函數和。當然,對這個新特性也有一定的擔心,體現在他使得異步代碼變的不再明顯,我們好不容易已經學會并習慣了使用回調函數或者來處理異步。 自從Node的7.6版本,已經默認支持async/await特性了。如果你還沒有使用過他,或者對他的用法不太了解,這篇文章會告訴你為什么這個特性不容錯過。本文輔以大量實例,相信你能很輕松的看懂,并了解Javascript處理異步的...
閱讀 2222·2021-09-24 10:31
閱讀 3875·2021-09-22 15:16
閱讀 3395·2021-09-22 10:02
閱讀 1010·2021-09-22 10:02
閱讀 1822·2021-09-08 09:36
閱讀 1974·2019-08-30 14:18
閱讀 609·2019-08-30 10:51
閱讀 1863·2019-08-29 11:08