收藏
回答

分享es6 的精炼co

问题模块
API和组件


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

});


最后一次编辑于  2017-04-05  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

5 个回答

  • aker
    aker
    2017-04-05

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

                        }

                    });

                });

            }

        }


    2017-04-05
    赞同
    回复
  • aker
    aker
    2017-04-05

    else if (co.isAsyncFunction(genFunc)) {

            genFunc();

        }


    2017-04-05
    赞同
    回复
  • aker
    aker
    2017-04-05

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

    2017-04-05
    赞同
    回复
  • 天铃鸟
    天铃鸟
    2017-04-05

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

    2017-04-05
    赞同
    回复
  • Wang
    Wang
    2018-09-07

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

    2018-09-07
    赞同
    回复