var helper = function (fn) {
return function () {
var args = [].slice.call(arguments);
var pass;
args.push(function () { // 在回调函数中植入收集逻辑
if (pass) { //*********
pass.apply(null, arguments);
}
});
fn.apply(null, args);
===========
return function (fn) { // 传入一个收集函数
pass = fn;
};
};
};
function run(fn) {
var gen = fn();
function next(err, data) {
var result = gen.next(data); // 这里执行了 ====以上的部分,并且返回一个高阶函数。
if (result.done) return;
result.value(next); //如果在设置用于收集结果的回调函数之前,原始函数就执行结束了呢?也就是*****行的 pass 变成了 undefined?
}
next();
}
run(gen);