co.js

作者: D6K | 来源:发表于2017-04-08 23:45 被阅读167次

简介

co.js是基于生成器函数的支持node端和浏览器端易用的控制流库,它使用Promise对象让你以一种优雅的方式书写非阻塞代码,从而避免传统的嵌套回调。
已发布co@4.0依赖于Promise对象,这主要是为支持ES7中的async/await提案做铺垫。主要API的改变是co()函数的调用方式,之前co返回的是一个供你后续调用带有一个毁掉和可选参数的“chunk”函数,现在返回的是一个Promise对象。

兼容性

co@4+需要有Promise实现,对于node <0.11和老版本浏览器,必须引入Promise ployfill。
如果你使用的node v0.10.x或不支持生成器函数的浏览器,你必须是使用gnoderegenerator
如果你使用node v0.11.x,你应该打开--harmoney-generator开关或者以--harmoney运行访问生成器函数。
对于node v4+的版本,可以直接使用co不再需要其他配置。

相关库

任何返回Promise对象的库都可以很好的跟co配合使用,其中mz包装了node返回Promise,更多库可以参见Wiki

Yieldables

当前支持的yieldable对象有:

  • promise
  • thucks(functions)
  • array(parallel execution)
  • objects(parallel execution)
  • generators(delegation)
  • generator functions(delegation)

co支持嵌套的yieldable对象,也就是说可以以对象、数组等嵌套Promise对象。

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);
});

相关文章

  • co.js

    简介 co.js是基于生成器函数的支持node端和浏览器端易用的控制流库,它使用Promise对象让你以一种优雅的...

  • co.js

    tj大神出品,让异步回调,同步的形式执行 这里co的作用,接受一个生成器,生成器中用两个yield迭代了两次pro...

  • co.js函数库

    1. Generator函数 Generator 函数就是一个封装的异步任务。异步操作需要暂停的地方,都用 yie...

网友评论

    本文标题:co.js

    本文链接:https://www.haomeiwen.com/subject/iibrattx.html