簡(jiǎn)介
co.js是基于生成器函數(shù)的支持node端和瀏覽器端易用的控制流庫(kù)群扶,它使用Promise對(duì)象讓你以一種優(yōu)雅的方式書寫非阻塞代碼及刻,從而避免傳統(tǒng)的嵌套回調(diào)。
已發(fā)布co@4.0依賴于Promise對(duì)象竞阐,這主要是為支持ES7中的async/await提案做鋪墊缴饭。主要API的改變是co()函數(shù)的調(diào)用方式,之前co返回的是一個(gè)供你后續(xù)調(diào)用帶有一個(gè)毀掉和可選參數(shù)的“chunk”函數(shù)骆莹,現(xiàn)在返回的是一個(gè)Promise對(duì)象颗搂。
兼容性
co@4+需要有Promise實(shí)現(xiàn),對(duì)于node <0.11和老版本瀏覽器幕垦,必須引入Promise ployfill丢氢。
如果你使用的node v0.10.x或不支持生成器函數(shù)的瀏覽器,你必須是使用gnode或regenerator先改。
如果你使用node v0.11.x疚察,你應(yīng)該打開--harmoney-generator開關(guān)或者以--harmoney運(yùn)行訪問生成器函數(shù)。
對(duì)于node v4+的版本仇奶,可以直接使用co不再需要其他配置貌嫡。
相關(guān)庫(kù)
任何返回Promise對(duì)象的庫(kù)都可以很好的跟co配合使用,其中mz包裝了node返回Promise,更多庫(kù)可以參見Wiki 该溯。
Yieldables
當(dāng)前支持的yieldable對(duì)象有:
- promise
- thucks(functions)
- array(parallel execution)
- objects(parallel execution)
- generators(delegation)
- generator functions(delegation)
co支持嵌套的yieldable對(duì)象岛抄,也就是說可以以對(duì)象、數(shù)組等嵌套Promise對(duì)象狈茉。
API
1. co(fn*).then(val =>)
Returns a promise that resolves a generator, generator function, or any function that returns a generator.
co(function*() {
return yield Promise.resolve(true);
}).then(function(val) {
console.log(val);
},function(err) {
console.error(err.stack);
});
2. var fn = co.wrap(fn*)
Convert a generator into a regular function that returns a Promise.
var fn=co.wrap(function*(val) {
return yield Promise.resolve(val);
});
fn(true).then(function(val) {
console.log(val);
});