美文网首页
co.js函数库

co.js函数库

作者: 彭奕泽 | 来源:发表于2018-07-05 00:19 被阅读0次

    1. Generator函数

    function* gen(x){
      let y = yield x + 2;
      return y
    }
    

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

    let g = gen(1);
    g.next() // { value: 3, done: false }
    g.next() // { value: undefined, done: true }
    

    next 方法还可以接受参数,这是向 Generator 函数体内输入数据。

    var g = gen(1);
    g.next() // { value: 3, done: false }
    g.next(2) // { value: 2, done: true }
    

    Generator 函数内部还可以捕获函数体外抛出的错误

    
    function* gen(x){
      try {
        var y = yield x + 2;
      } catch (e){ 
        console.log(e);
      }
      return y;
    }
    
    var g = gen(1);
    g.next();
    g.throw('出错了');
    // 出错了
    

    2. co 函数库可以让你不用编写 Generator 函数的执行器

    var gen = function* (){
      var f1 = yield readFile('/etc/fstab');
      var f2 = yield readFile('/etc/shells');
      console.log(f1.toString());
      console.log(f2.toString());
    };
    
    var co = require('co');
    co(gen);
    

    这样generator函数就会自动执行,co 函数返回一个 Promise 对象,因此可以用 then 方法添加回调函数。

    co(gen).then(function (){
      console.log('Generator 函数执行完成');
    })
    

    3. 博客(暂时还看不很懂)

    1. co 函数库的含义和用法

    相关文章

      网友评论

          本文标题:co.js函数库

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