【问题标题】:Can not join room in socket.io from inside promise无法从内部承诺加入 socket.io 中的房间
【发布时间】:2021-01-13 09:52:38
【问题描述】:

我正在尝试使套接字从 .then() 内部加入房间,但它不起作用。我知道代码中的其他所有内容都是正确的,因为在将其(连接)移到 .then() 之外并进入同步函数之后它可以工作。我怎样才能让它以这种方式工作?

client.query('SELECT x FROM y WHERE f= $1;', ["example"])
.then((results) => {
    socket.join('test');// join room
    //more code that works properly...
})

【问题讨论】:

  • 你能进一步详细说明什么不起作用吗?
  • @Evert 那么不起作用的是套接字没有加入房间。我很确定这是问题的方式是因为我有一个函数可以发出消息。当我在.then() 之外执行socket.join(); 时,它可以工作并且正在发送消息。当.join.then() 内时,根本不会发生发射(没有任何东西到达客户端)。
  • 你的所有承诺链都有.catch 子句吗?
  • 是的,一切正常,唯一失败的是socket.join()

标签: javascript node.js asynchronous promise socket.io


【解决方案1】:

您可以尝试对 socket.io 连接使用异步等待。

【讨论】:

  • 不确定这是否会起作用,因为据我所知,在这种情况下,异步/等待与承诺的工作方式没有什么不同。我也非常喜欢用承诺来做到这一点
猜你喜欢
  • 2017-11-06
  • 2014-09-15
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多