Не удается соединить комнату в розетке.ввод -вывод изнутри обещания

#javascript #node.js #asynchronous #promise #socket.io

#javascript #node.js #асинхронный #обещание #socket.io

Вопрос:

Я пытаюсь заставить сокет присоединиться к комнате изнутри .then() , но это не работает. Я знаю, что все остальное в коде правильно, потому что после перемещения его (соединения) за пределы .then() и в функцию синхронизации он работает. Как я могу заставить это работать таким образом?

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

Комментарии:

1. Можете ли вы подробнее рассказать, что не работает?

2. @Evert Ну, что не работает, так это то, что сокет не присоединяется к комнате. Я уверен, что проблема в том, что у меня есть функция, в которой я отправляю сообщение. Когда я делаю socket.join(); это за пределами .then() , это работает, и сообщение отправляется. Когда .join находится внутри .then() , излучение вообще не происходит (ничего не доходит до клиента).

3. У вас есть .catch предложения для всех ваших цепочек обещаний?

4. да, и все это работает нормально, единственный бит, который терпит неудачу, — это socket.join()

Ответ №1:

Вы можете попробовать использовать async await для сокета.подключение ввода-вывода.

Комментарии:

1. Не уверен, что это сработает, потому что, насколько я знаю, в этом контексте асинхронность / ожидание не отличается от того, как работают обещания. Я бы также очень предпочел сделать это с помощью promises