當前位置:
首頁 > 知識 > CO函數庫源碼解析

CO函數庫源碼解析


一、co函數是什麼  

co 函數庫是著名程序員 TJ Holowaychuk 於2013年6月發布的一個小工具,用於 Generator 函數的自動執行。短小精悍只有短短200餘行,就可以免去手動編寫Generator 函數執行器的麻煩


二、co函數怎麼用

舉個栗子就能清楚的知道如何使用co函數

CO函數庫源碼解析

手動執行和co函數執行的寫法如下

CO函數庫源碼解析

兩者的差別應該一眼就能看出來了。


三、co函數如何實現自動執行

co用promise的特性,將整個Generator函數包裝在一個promise下,利用Generator的next鏈,循環調用co方法將不同的next任務分別包裝為不同的子promise。根據next的狀態來執行不同的resolve,進而實現自動執行。

基本流程如下圖,忽略我渣渣的畫圖能力

CO函數庫源碼解析

具體如何實現,下面一起看下源碼


四、co源碼解析

為了更好的分析,還是對源碼的方法進行分類主要有以下兩類:

4.1 輔助函數

輔助函數很好理解了,主要是用來做類型判斷,參數解析等功能的。直接看代碼

CO函數庫源碼解析

4.2 功能函數,這裡就按調用流程看

co:入口函數,將傳入的函數先做類型判斷然後返回一個promise對象

CO函數庫源碼解析

這裡首先生成一個gen函數實例,如果gen非generater函數,直接執行resolve

然後調用onFulfilled函數,即先執行一次generater.next,將value作為後面的執行的參數

CO函數庫源碼解析

然後就到了實現自動執行的關鍵函數next

題外話,既然是實現了自動調用,無非是遞歸和迭代來調用執行函數,next函數就負責該部分內容

CO函數庫源碼解析

看到這裡可能會問,具體的循環調用是在哪裡實現的,不要急咱們再看下toPromise的實現:

CO函數庫源碼解析

這裡就是將各種類型轉化為對應的promise,然後執行。到此co的整體流程就結束了。其他的如何實現這裡就不做講述了。

上面就是我研究co源碼之後的一些個人體會,希望能對其他人有所幫助。



PHP學習交流群,免費視頻學習資料:365672221

更多精彩內容,訪問中公優就業官網:http://xue.ujiuye.com/?wt.bd=zt36716tt

500萬就業基金助力,2017大學生就業扶助計劃:http://www.ujiuye.com/zt/jyfc/?wt.bd=zt36716tt

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT優就業 的精彩文章:

「腦殘粉「是種什麼樣的存在?
開學季,你不能錯過的撩妹脫單秘籍!

TAG:IT優就業 |

您可能感興趣

Dao層+資料庫解析數據
奇門遁甲數碼預測思維解析
《COMPASS》十文字雅達利詳細解析
KOT:卡澳鏈 COIN基於ETH的數字密碼解析
解析:PS圖層概念
DIY電腦電源解析!
小蟻NEO錢包賬號創建原理解析
彩虹六號:Kaid武器數據解析
電腦CPU故障問題解析
深入解析JIT編譯
Redis集群分區原理及客戶端源碼解析
三款熱銷18W USB PD充電器拆解:快充方案大解析
《COMPASS戰鬥天賦解析系統》玩法大解析
c井Queue源碼解析
詳細解析如何設計英文LOGO字體
使用 Python 解析參數
解析ICO詐騙和傳銷
取證大師APFS加密數據解析功能重磅上線!
H1B中籤查詢途徑解析
解析《#COMPASS戰鬥天賦解析系統》炮娘