const Thunk = function (fn) {
return function (...args) {
return function (callback) {
return fn.call(this, ...args, callback);
}
};
};
function run(fn) {
var gen = fn();
function next(err, data) {
var result = gen.next(data);
if (result.done) return;
result.value(next);
}
next();
}
function f(a, cb) {
cb(null, a);
}
const ft = Thunk(f);
co(function* () {
let res1 = yield Promise.resolve(1);
console.log(res1, 'res1')
let res2 = yield [1, 2, 3, 2];
console.log(res2, 'res2')
let res3 = yield Promise.resolve(3);
console.log(res3, 'res3')
let res4 = yield ft(Promise.resolve(666));
console.log(res4, 'res4')
let res5 = yield Promise.resolve(555);
console.log(res5, 'res5')
})
console.log('end')
co源码地址