【发布时间】:2018-11-14 10:52:51
【问题描述】:
我正在编写控制硬件的网络应用程序。我有一台服务器通过串口与设备通信。除了与用户的交互之外,一切正常。该设备具有我反复要求等待一些值的寄存器。如果出现一些值,我会向客户端发出一个事件并出现确认框。用户选择恢复或中止。在该客户端发出响应(真或假)之后,我想在我的承诺函数中解决这个响应。我需要在函数中准确捕捉用户的响应,因为我需要执行一系列操作。一个又一个的承诺。看来我的功能在用户回答之前就结束了。如何解决这个问题?
这是我在服务器上的代码:
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);
});
});
}
【问题讨论】:
标签: javascript node.js reactjs socket.io promise