在我的NodeJs应用程序中,我想在发生套接字IO事件时呈现文件。
我正在用python运行一个不同的socket.io服务器,该服务器会在事件发生时进行一些计算,并触发另一个返回事件到NodeJs端。但是,重定向操作在返回事件和页面渲染之前没有新数据之前完成。我真正想要的是在返回事件完成后对新数据“ x”应用重定向。
let x = []
app.get("/", function(req, res) {
res.render('home', {'x' : x});
});
app.post("/", function(req, res) {
socket.emit('main event', 'data'); //trigger the main event
res.redirect("/");
})
socket.on('return event', (data) => { //this is the return event
x = data.x;
// I want render to happen after this line
});
有没有什么方法可以在表达事件中而不是在socket.io回调或等待事件完成的阻塞调用中进行渲染操作?
答案 0 :(得分:0)
将res.redirect
添加到socket.emit
中的确认回调中。
app.post("/", function(req, res) {
socket.emit('main event', 'data', function(err, msg) {
if(err) throw new Error(err);
res.redirect("/");
});
});
答案 1 :(得分:0)
感谢您的所有回答。我真正需要的是像这样将socket.on事件放入app.post中。
app.post("/", function(req, res) {
socket.on('return event', (data) => {
x = data.x;
res.redirect("/");
});
socket.emit('main event', 'data');
})
承诺也是一个很好的建议,再次感谢您的所有答复