我正在编写控制硬件的网络应用程序。我有一台服务器通过串口与设备通信。除了与用户的互动外,一切都有效。该设备有寄存器,我反复要求等待一些值。如果有一些值,我会向客户端发出一个事件并出现确认框。用户选择简历或中止。在该客户端发出响应(true或false)之后,我想在promise函数中解决此响应。我需要在函数中准确地捕获用户的响应,因为我需要执行一系列操作。承诺后的承诺。似乎我的功能在用户回答之前结束。如何解决这个问题?
这是我在服务器上的代码:
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);
});
});
}
答案 0 :(得分:0)
我应该使用socket.id - 我的连接ID
io.sockets.connected[socket.id].once('userResponce', handler);