标题:co最简版实现,学习generator & co 出处:刘新修 时间:Wed, 17 May 2017 17:25:46 +0000 作者:刘新修 地址:http://liuxinxiu.com:80/s/278/ 内容: 看了co的源码 比较难懂 了解了其原理后实现了一个最简版本https://github.com/yucong/simple-co 希望对想学习的tx有帮助~ yeild后面只支持thunk,co本身也是一个thunk 核心代码: function co(generator) { return function(fn) { var gen = generator(); function next(err, result) { if(err){ return fn(err); } var step = gen.next(result); if (!step.done) { step.value(next); } else { fn(null, step.value); } } next(); } } 用法: var co = require('./co'); // wrap the function to thunk function readFile(filename) { return function(callback) { require('fs').readFile(filename, 'utf8', callback); }; } co(function * () { var file1 = yield readFile('./file/a.txt'); var file2 = yield readFile('./file/b.txt'); console.log(file1); console.log(file2); return 'done'; })(function(err, result) { console.log(result) }); 会打印出: content in a.txt content in b.txt done ================================ generator_co: http://liuxinxiu.com/generator_co/ Generated by Bo-blog 2.1.1 Release