squadbrodyaga
@squadbrodyaga
帆は風を変えた

Как получить значение из resolve в return?

Вообщем мой похожий вопрос удалили, но поскольку я ничего не нагуглил, то пишу снова.
// есть вот такой консоль лог, который показывает результат функции.
console.log(asd())

// вот это функция, в которой есть промис, в котором socket.io событие, данные из события...
// ...мне нужно передать в console.log
function asd() {
  // кое какой код...

  const p = new Promise (function(resolve, reject) {
    socket.on('событие', data => {
      resolve(data)
    })
  })
  // но консоль лог послал меня со словами "Promise { <pending> }"
  return p
}
// Вообщем пока не понимаю как вытащить данные из socket.io в console.log


P.S: Вопрос не удаляйте.
  • Вопрос задан
  • 192 просмотра
Решения вопроса 3
zkrvndm
@zkrvndm
Архитектор решений
Попробуйте так:
function asd() {
  return new Promise (function(resolve, reject) {
    socket.on('событие', data => {
      resolve(data);
    });
  });
}

test = await asd();
console.log(test);
Ответ написан
YuriyVorobyov1333
@YuriyVorobyov1333
Software Developer
Есть пара вариантов сделать это.
Вариант первый:
function asd() {
  const p = new Promise ((resolve, reject) => {
    socket.on('событие', data => {
      resolve(data);
    });
  });

  return p;
}

asd()
  .then(result => console.log(result))


Вариант второй (самовызывающаяся функция для того, чтобы использовать await):
function asd() {
  const p = new Promise ((resolve, reject) => {
    socket.on('событие', data => {
      resolve(data);
    });
  });

  return p;
}

(async () => {
  const result = await asd();


  console.log(result);
})()
Ответ написан
Комментировать
ramil_bayramov
@ramil_bayramov
Your Personal Sheikh
через then i json()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы