ES6异步操作Thunk、co和async

  使用Thunk函数对Generator函数进行流程管理,首先什么是Thunk函数?我们应该先说下参数的求值策略,编译器的求值策略一个是“传值调用”另一个是“传名调用”,编译器的传名调用实现往往是现将函数放到一个临时函数中,再将这个临时函数传入函数体,这个临时函数就是Thunk。

  如果用于生产环境的转换器,建议使用Thunkify模块。首先安装 npm install thunkify,如果你不想去写Generator构造器,那么安装co吧,安装命令为 npm install co ,这个co是一个自动执行器。

var thunkify = require('thunkify');
var co = require('co');
var test = function *() {
    var a1 =  console.log(1);
    var a2 =  console.log(2);
    var a3 =  console.log(3);
    var a4 =  console.log(4);
    return '完毕';
};
console.log(co(test));            //1 2 3 4 Promise { '完毕' }

  如果你还想懒那么就可以使用async(注意这是ES7提供的函数),他是Thunk+co。他就是将Generator函数的*号换成了async,将yield换成了await而已。

var sleep = function (time) { 
    return new Promise(function (resolve, reject) { 
        setTimeout(function () { 
        resolve(); 
    }, time); }) 
}; 
var start = async function () { 
// 在这里使用起来就像同步代码那样直观 
    console.log('start'); 
    await sleep(3000); 
    console.log('end'); 
}; 
start();        //start (三秒后) end

 

posted on 2017-10-21 17:18  另一种失败 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/qiaohong/p/7705272.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值