等待回拨完成Node.js

时间:2014-08-12 12:43:25

标签: javascript node.js

我的情况是这样的,我有一个像这样的服务器,我正在调用另一个回调函数,它获取多个值:

var http = require('http'); 
var server = http.createServer(req,resp) {
     var finalVal = "";

     consumer.on('message',function(message) {
         finalVal = message;
         console.log(finalVal);
     });

     resp.end(finalVal);
});

我的finalVal应该显示它获取的所有多个值并将其作为响应发送,但问题是它只发送第一个值,而console.log显示所有值。我确实知道,当消费者结束时,响应将会提交。有人可以帮助我如何处理这种情况,因为我对Node.js很新吗?目前由于时间紧迫,我没有时间阅读有关回调的完整信息。但有条不紊地我会花时间去了解回调。

编辑:此处consumer.on多次调用,直到从后端获取所有数据,我需要在最终响应中发送所有这些数据。我正在使用node-kafka来消费kafka消息。

1 个答案:

答案 0 :(得分:0)

必须有一个end事件或类似事件告诉consumer已完成消息,您可以使用

我不确定这里的消费者是什么,但在大多数情况下,我们会选择像bellow

这样的东西
var finalVal = '';

consumer.on('message',function(message) {
     finalVal += message; // So on each message you will just update the final value
     console.log(finalVal);
 });

consumer.on('end',function(){ // And at the end send the response
     resp.end(finalVal);
});