目前我所拥有的是:
var server = http.createServer(function(req,res){
res.writeHead(200,{'Content-Type': 'text/html; charset=utf-8'});
var oo = require('/test.js');
oo(connection, function (e, result) {
res.end(result);
});
}).listen(80);
我想做的是
var server=http.createServer(function(req,res){
res.writeHead(200,{'Content-Type': 'text/html; charset=utf-8'});
var oo = require('/test.js');
oo(connection, function (e, result) {});
res.end(result);
}).listen(80);
但这不起作用。
想法是移动
res.end(result);
正上方
}).listen(80);
答案 0 :(得分:0)
我不知道你为什么要这样做,请阅读about async and sync code,不是最好的文章,但你可以找到很多,但我有一个解决方案。
在开始之前,请安装Fibers package:
npm install fibers
解决方案:
var Future = require('fibers/future');
var server = http.createServer(function(req,res){
fut = new Future();
res.writeHead(200,{'Content-Type': 'text/html; charset=utf-8'});
var oo = require('/test.js');
oo(connection, function (e, result) {
fut.return(result);
});
res.end(fut.wait());
}).listen(80);
请阅读JS Conventions。
答案 1 :(得分:0)
它不能移动到回调函数之外,因为在这种情况下它会在回调之前执行,我想这会产生一个输出到res
。由于您之前关闭了res
,因此无法发送此结果。