參考
co 函數庫是用於 Generator 函數自動實行的一個小工具。
usge
var co = require('co');
co(gen);// gen 是一個Generator 函數
// co 函數返回一個 promise
co(gen).then(function (){
console.log('Generator 函數實行完成');
})
// 上面代碼中,比及 Generator 函數實行完畢,就會輸出一行提醒。
道理
Generator 函數就是一個異步操縱的容器,它的自動實行須要一種機制,當異步操縱有了效果,能夠自動交回實行權
兩種要領能夠做到這一點:
- 回調,將異步操縱包裝成 Thunk 函數,在回調函數內里交回實行權。
- promise .then()
co 函數實在就是將兩種自動實行器( Thunk 函數和 Promise 對象),包裝成一個庫。
- 運用 co 的條件是, Generator 函數內的 yield 敕令背面,只能是 Thunk 函數 或許 promise 對象。
源碼
源碼剖析看參考鏈接。