'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);
异步函数通过Thunk话在generator中自动执行
最新推荐文章于 2022-10-20 23:21:32 发布