我正在尝试使用生成器同步调用koa中的常规回调样式函数。以下方法有效:
var res = yield function (cb) {
myDaoObject.load(function (err, res) {
cb(err, res);
})
};
所以我不会用适当的库使用替换它,它应该是等价的:
var ld = thunkify(myDaoObject.load);
var res = yield ld();
这不起作用。这些应该是不一样的吗?
答案 0 :(得分:2)
实际上你几乎不需要在这里使用thunkify
,因为你的功能没有参与。您可以(并且应该)将其简化为
yield function(cb) { myDaoObject.load(cb); }
甚至可能更进一步
yield myDaoObject.load;
如果load
不是使用this
的方法,会有效。你必须bind
到你希望它被调用的对象:
yield myDaoObject.load.bind(myDaoObject);
同样的问题出在你的thunkify
电话上 - 否则很好(尽管没必要)。