【发布时间】:2016-05-15 13:43:08
【问题描述】:
我有这个代码 sn-p。
function handleRequest(req, res)
{
req.on('data', parseInput);
res.write(generateInputform());
}
http.createServer(handleRequest).listen(port, ipAddress);
req.on 回调 parseInput 并按字面意思执行函数的调用,它解析输入并设置引脚等。然后生成另一个输入表单并呈现给用户。
然而,node.js 先生成输入然后解析输入...这意味着用户必须刷新页面以反映给定的命令。解析输入工作,我可以看到用我的逻辑分析仪提交的引脚切换。
我似乎陷入了困境,因为我找不到这个答案的简单解决方案。那些显示承诺的处理异步延迟,我宁愿避免。
也许有人可以阐明这个问题?
这是完整的handleRequest。
function handleRequest(req, res)
{
switch( req.url )
{
case "/markings.css" :
res.writeHead(200, {'Content-Type': 'text/css'});
res.end("Literally nothing right now");
break;
case "/json" :
res.writeHead(200, {'Content-Type': 'text/json'});
res.end(encapsulator(J17_1, J18_1, J19_14, J20_14));
break;
case "/index":
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(getHTML());
break;
case "/":
// show the user a simple form
console.log("[200] " + req.method + " to " + req.url);
res.writeHead(200, "OK", {'Content-Type': 'text/html'});
switch( req.method )
{
case 'POST':
//Problems between here
req.on('data', parseInput);
res.write(generateInputform());
//And here
console.log("Done");
res.end();
break;
case 'GET':
console.log("User probably refreshed page without entering anything useful");
res.write(generateInputform());
console.log("Done");
res.end();
break;
default:
console.log("?");
res.end();
break;
}
//res.end();
break;
default:
res.writeHead(404, {'Content-Type': 'text/html'});
res.end('<!DOCTYPE html>\r\n<html>\r\n<body>\r\n404, that means trouble.<br><a href="http://' +
ipAddress + ':' + port + '">Go back to the index</a></body></html>');
break;
}
}
编辑:
在这里找到答案。 Make a blocking call to a function in Node.js required in this case?
新的句柄请求
req.on('data', parseInput);
req.on('end', function()
{
res.write(generateInputform());
console.log("Done");
res.end();
});
【问题讨论】:
标签: javascript node.js server iot intel-edison