Я пишу веб-приложение, которое управляет оборудованием.У меня есть сервер, связанный с устройством через последовательный порт.Все работает, кроме взаимодействия с пользователем.Устройство имеет регистры, которые я неоднократно спрашиваю, ожидая некоторых значений.Если приходят какие-то значения, я отправляю клиенту событие, и появляется окно подтверждения.Пользователь выбирает резюме или прерывание.После этого клиент отправляет ответ (true или false), и я хотел бы разрешить этот ответ в своей функции обещания.Мне нужно поймать ответ пользователя именно в функции, потому что у меня есть последовательность действий, которые мне нужно выполнить.Обещание за обещанием.Кажется, что моя функция заканчивается до того, как пользователь ответит.Как решить эту проблему?
это мой код на сервере:
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);
});
});
}