Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript socket.emit,并在解析承诺之后等待用户响应_Javascript_Node.js_Reactjs_Socket.io_Promise - Fatal编程技术网

Javascript socket.emit,并在解析承诺之后等待用户响应

Javascript socket.emit,并在解析承诺之后等待用户响应,javascript,node.js,reactjs,socket.io,promise,Javascript,Node.js,Reactjs,Socket.io,Promise,我正在编写控制硬件的web应用程序。我有一个服务器通过串口与设备通信。除了与用户的交互之外,一切都正常。该设备有寄存器,我会反复请求它们等待一些值。如果出现一些值,我将向客户端发送一个事件,并显示确认框。用户选择恢复或中止。在客户端发出响应(true或false)之后,我希望在我的promise函数中解析此响应。我需要在函数中准确地捕捉用户的响应,因为我有一系列需要继续的操作。一个接一个的承诺。似乎我的函数在用户回答之前就结束了。如何解决这个问题 这是我在服务器上的代码: waitUserRes

我正在编写控制硬件的web应用程序。我有一个服务器通过串口与设备通信。除了与用户的交互之外,一切都正常。该设备有寄存器,我会反复请求它们等待一些值。如果出现一些值,我将向客户端发送一个事件,并显示确认框。用户选择恢复或中止。在客户端发出响应(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);
      });
    });
  }

我应该使用socket.id-id进行连接

io.sockets.connected[socket.id].once('userResponce', handler);