Javascript socket.emit,并在解析承诺之后等待用户响应
我正在编写控制硬件的web应用程序。我有一个服务器通过串口与设备通信。除了与用户的交互之外,一切都正常。该设备有寄存器,我会反复请求它们等待一些值。如果出现一些值,我将向客户端发送一个事件,并显示确认框。用户选择恢复或中止。在客户端发出响应(true或false)之后,我希望在我的promise函数中解析此响应。我需要在函数中准确地捕捉用户的响应,因为我有一系列需要继续的操作。一个接一个的承诺。似乎我的函数在用户回答之前就结束了。如何解决这个问题 这是我在服务器上的代码:Javascript socket.emit,并在解析承诺之后等待用户响应,javascript,node.js,reactjs,socket.io,promise,Javascript,Node.js,Reactjs,Socket.io,Promise,我正在编写控制硬件的web应用程序。我有一个服务器通过串口与设备通信。除了与用户的交互之外,一切都正常。该设备有寄存器,我会反复请求它们等待一些值。如果出现一些值,我将向客户端发送一个事件,并显示确认框。用户选择恢复或中止。在客户端发出响应(true或false)之后,我希望在我的promise函数中解析此响应。我需要在函数中准确地捕捉用户的响应,因为我有一系列需要继续的操作。一个接一个的承诺。似乎我的函数在用户回答之前就结束了。如何解决这个问题 这是我在服务器上的代码: waitUserRes
waitUserResponse(message) {
return new Promise(async (resolve) => {
const handler = function(data) {
console.log('userAnswer = ', data);
resolve(data);
return;
}
this.io.sockets.emit('alerts', message);
this.io.sockets.once('userAnswer', handler);
})
}
这是我在客户端上的代码:
componentDidMount() {
const confirmDialog = (msg) => {
return new Promise((resolve) => {
let confirmed = window.confirm(msg);
resolve(confirmed);
return;
})
}
socket.on('alerts', data => {
confirmDialog(data).then(data => {
console.log(data);
socket.emit('userAnswer', data);
});
});
}
我应该使用socket.id-id进行连接
io.sockets.connected[socket.id].once('userResponce', handler);