co.wrap = function(gen) {
var idt = gen(resume)
function resume() {
var args = arguments
process.nextTick(function() {
var obj = idt.next(args).value
if (obj && isPromise(obj))
obj.then(
(res) => {
resume(null, res)
},
(err) => resume(err)
)
})
}
return resume
}
co.run = function(gen) {
co.wrap(gen)()
}
co.run(function * ($) {
// yield
})
对应这句代码我不是很理解: resume(null, res)
望指教
原来我不理解是因为:
不懂为什么要递归呢?
是为了继续运行生成器函数,直到返回 Object { value: undefined, done: true }
resume(null, res)
传的参数是干什么用的呢?
实际上是将结果传回去,类似这个
function* gen() {
while(true) {
var value = yield null;
console.log(value);
}
}
var g = gen();
g.next(1);
// "{ value: null, done: false }"
g.next(2);
// "{ value: null, done: false }"
// 2
等我想好了,我会告诉大家使用process.nextTick( )的意义。