分享es6 的精炼co

发布于 7 年前作者 fangtang2132 次浏览最后编辑 7 年前来自 ask

co代码贴过来居然保存不了,只能图片了github:qingdie-co


var co = require('utils/co.js');

co(function* (cb) {

  var user = yield getUser('你好!', cb);

  console.log(user);

  var user1 = yield getUser1('棒棒哒!');

  console.log(user1);


  var ret = yield co(function (cba) {

      getUser('棒棒哒!', cba('user'));

      getUser('你好!', cba('user1'));

  })(2);

  console.log(ret);

});


5 回复
yanshi
yanshi1 楼6 年前

楼主使用co.js不报错吗?我这里使用co.js,开发者工具报:regeneratorRuntime is not defined;错误。

yancai
yancai2 楼6 年前

else if (co.isAsyncFunction(genFunc)) {

        genFunc();

    }

lei85
lei853 楼6 年前

后面的代码贴上来发布都不行

liuping
liuping4 楼6 年前

是想说生成器函数吧,太乱了你

acao
acao5 楼5 年前

function co(genFunc, cb) {

    if (co.isGenerator(genFunc)) {

        genFunc = genFunc(next);

        next();

    } else if (co.isGeneratorObj(genFunc)) {

        next();

    }

    else if (co.isFunction(genFunc)) {

        return function (num) {

            return new Promise(function (res) {

                var data = {};

                var cbnum = 0;

                genFunc(function (key) {

                    return num == 1 ? res(key) : function (args) {

                        data[key] = args;

                        ++cbnum == num && res(data);

                    }

                });

            });

        }

    }