试图thunkify一个基于callback的函数来使用发电机(良率),不起作用

我正在尝试使用生成器同步调用koa中的常规callback样式函数。 以下方法工作:

var res = yield function (cb) { myDaoObject.load(function (err, res) { cb(err, res); }) }; 

所以我不会用适当的库应用来代替它:

 var ld = thunkify(myDaoObject.load); var res = yield ld(); 

而这是行不通的。 这不应该是一回事吗?

其实你几乎不需要在这里使用thunkify ,因为你的函数没有参数。 你可以(而且应该)简化它

 yield function(cb) { myDaoObject.load(cb); } 

甚至还可能进一步

 yield myDaoObject.load; 

这将工作如果load不是一个使用this方法。 你将不得不把它bind到你想要的对象:

 yield myDaoObject.load.bind(myDaoObject); 

同样的问题是你thunkify电话 – 这是很好的(尽pipe不必要)。