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