const readFile = (fileName) => (callback) => callback() let n = 0 readFile('fileName')(function(){ n += 1; return n; }) var gen = function* (){ var f1 = yield readFile('fileA'); var f2 = yield readFile('fileB'); // ... var fn = yield readFile('fileN'); }; // 自动流程执行 var run = function (gen){ // 初始化迭代器 const g = gen(); // 执行 process(); function process(err, valueFromYield){ const {value, done}= g.next(valueFromYield); if(err || done){ return; } else { value(process) } } } run(gen)