我是Koa的新手,但是设置了一个使用Kafka的应用程序。我正在使用kafkaesque(https://github.com/pelger/Kafkaesque)。我试过了yield* kafkaesque.tearUp()
。结果:
cb(err);
^
TypeError: undefined is not a function
我也尝试了kafkaesque.tearUp(function *() {...})
但是这也不起作用 - 只有function()样式的回调有效。是否可以以Koa方式使用这些类型的示例?我可以根据需要处理回调,但现在不能使用代码,因为我需要在连接Kafka(kafkaesque.tearUp)并设置主题(kafkaesque.poll)之后调用yield next
。
答案 0 :(得分:2)
我终于能够通过使用“thunking”获得kafkaesque的工作:
function tearUpThunk(kafka) {
return function(callback) {
kafka.tearUp(callback);
}
}
function pollThunk(kafka, options) {
return function(callback) {
kafka.tearUp(options, callback);
}
}
yield tearUpThunk(kafka) //Previously kafka.tearUp(function() {
yield pollThunk(kafka, options); // kafka.poll(options, function() { etc.
我只需要确保每个函数以这种方式返回回调。感谢http://strongloop.com/strongblog/node-js-express-introduction-koa-js-zone/解释这个和其他Koa模式!
节点库thunkify也可以使这更容易(https://github.com/visionmedia/node-thunkify)。