您的位置:首页 > 其它

异步函数通过Thunk话在generator中自动执行

2017-12-22 15:58 274 查看
'use strict'
const fs = require('fs');
//将一个异步函数转换为Thunk型函数
var toThunk = function(fun){//参数一个异步函数
return function(...args){
return function(callback){
fun.call(this,...args,callback);
}
}
}
function f(a,fun){
fun(a);
}
toThunk(f)('23')(console.log);

var readFileThunk = toThunk(fs.readFile);

var reads = function * (){
let data1 = yield readFileThunk('./c3.js');
console.log(data1.toString());
let data2 = yield readFileThunk('./c9.js');
console.log(data2.toString());
return 'over';
}

//下面函数执行自动执行generator函数
function run(f){
var gen = f();

function next(err,data){
var result = gen.next(data);
//将异步执行的结果返回给genetator函数
//generator函数继续执行
//遇到yield返回其后的表达式
if (result.done) {
console.log(result.value);
return;
}
result.value(next);
}
next();
}

run(reads);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  callback 异步