squadbrodyaga
@squadbrodyaga
帆は風を変えた

Как сделать переменную из Socket.io доступной везде?

Здравствуйте.
Есть вот такая Socket.io-фиговина:
socket.on('Название события', data => {
  const переменная = data
})

и вообщем появилась нужда использовать переменную из события Socket.io в другой функции,
можно ли как-то сделать её общедоступной? Или придётся писать функцию внутри события Socket.io?
  • Вопрос задан
  • 190 просмотров
Решения вопроса 2
@VegasChickiChicki
Объявить переменную на более высоком уровне видимости и переприсваивать ее, когда вам нужно.
Или нужно объявить ее совсем глобально? Я не эксперт node, но там есть какой то глобальный объект, кажется, по типу window на фронте, можете попробовать в него положить.

P.S. А для чего это вообще нужно?
Ответ написан
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
если доступной нужно сделать переменную (не значение переменной) то так
var sharedData;
socket.on('Название события', data => {
  sharedData = data
})


Но подозреваю что вам нужно сделать доступной не саму переменную а полученное внутри обработчика значение data?

Если вам нужен именно второй вариант, то ответ НИКАК))))

НО:

1. вы можете сделать видимость ее доступности:
(async () => {
  async function getData(){
    const promise = new Promise(function(resolve, reject) {
      socket.on('Название события', data => {
        resolve(data);
      });
    });
    return promise;
  }
  var sharedData = await getData();

  // тут в sharedData будет доступно значение из data

})();


2. или же вы можете в нужных местах (в нескольких) ловить событие 'Название события', и при его получении обрабатывать data.

3. есть и другие варианты, все они связанны с асинхронностью, и так или иначе позволяют правильно и своевременно обработать data поступившую посредством события 'Название события'
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы