所以如果我在node.js中有一个服务器,我知道我可以有类似的东西:
server.on('request', function() {
console.log('received request');
});
但我想用promises做同样的事情。我导入Q并做了:
Q.nfcall(server.on('request')).then(function() {
console.log('received request');
});
但它说" TypeError:listener必须是一个函数。"你怎么做到这一点?谢谢!
答案 0 :(得分:2)
您需要将函数传递给Q.nfcall
,而不是调用.on()
的结果。 Q然后将为调用提供回调参数。使用
Q.nfcall(server.on, 'request').then(…)
// or rather, since it wouldn't get the context right:
Q.nbind(server.on, server)('request').then(…)
Q.ninvoke(server, 'on', 'request').then(…)
但是,这似乎不是一个好主意,因为request
event会多次触发,但承诺只能解决一次(它代表一个值)。你可能想要研究一下FRP。