koa的controller 中,如果需要提取公共的代码到单独的函数中,比较困难,
经过尝试,方法如下(co 嵌套)
var co = require("co");
co(function* () {
console.log( yield testAsync(1));
var x2 = yield innerF();
console.log(x2);
console.log(yield testAsync(4));
})
// 提取出来的公共函数
function innerF() {
return co(function* () {
var x1 = yield testAsync(2);
console.log(x1);
var x2 = yield testAsync(3);
return x2;
})
}
// 模拟一个标准的异步函数
function testAsync(id) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve(id);
}, 100)
})
}