#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