Node.js我的请求未被阻止

Node.js我的请求未被阻止,node.js,request,blocking,Node.js,Request,Blocking,我是node.js的新手,我正在尝试调用一个服务,解析它的数据,并将其作为视图的一部分返回。在响应完成之前,我似乎无法阻止请求。控制台总是在“正确”之前记录“错误”(返回1,2,3数组)。我错过了什么 app.js var reading = require('./reading'); app.get('/reading', function(req, res){ res.render('reading/index.stache', { locals : {

我是node.js的新手,我正在尝试调用一个服务,解析它的数据,并将其作为视图的一部分返回。在响应完成之前,我似乎无法阻止请求。控制台总是在“正确”之前记录“错误”(返回1,2,3数组)。我错过了什么

app.js

  var reading = require('./reading'); 

  app.get('/reading', function(req, res){
  res.render('reading/index.stache', 
    {
      locals : { ids : reading.list},
      partials : {
             list : '{{#ids}}{{.}}<br />{{/ids}}'
      }
  });
});

如果您不想同步运行任何内容,请查看。它基于光纤。

当然,在响应返回之前,您无法获得阻止请求

这是因为在发送请求和获取响应之间存在通信延迟。在这种延迟发生时,等待什么也不做是愚蠢的

使用回调和异步控制流

var list = function(callback){

var connection = http.createClient(80, host),
    request = connection.request(path);

request.addListener('response', function(response){
    var data = '';
    response.addListener('data', function(chunk){ 
        data += chunk; 
    });
    response.addListener('end', function(){
        console.log('right')
        // USE A CALLBACK >:(
        callback([88234,883425,234588]);
    });
});

request.end();
}

您正在使用
+=
将缓冲区隐式转换为字符串。如果要像那样追加,则需要执行'response.setEncoding('utf8'),否则可能会在响应中中断多字节字符。如何在我的app.js上下文中使用此选项?res.render(…)会是回调函数吗?@bluevoodoo1 res.render会在回调函数中不是你问题的答案,但我只想指出,你需要“请求”模块,然后使用节点的核心“createClient”。对不起,这是其他尝试留下的。。。。
var list = function(callback){

var connection = http.createClient(80, host),
    request = connection.request(path);

request.addListener('response', function(response){
    var data = '';
    response.addListener('data', function(chunk){ 
        data += chunk; 
    });
    response.addListener('end', function(){
        console.log('right')
        // USE A CALLBACK >:(
        callback([88234,883425,234588]);
    });
});

request.end();
}