Невозможно получить данные из обещания - PullRequest
0 голосов
/ 26 февраля 2019

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

async function A(){
    await new Promise((resolve, reject) => setTimeout(()=>{},1000));
    return 45;
}
A().then(data => console.log(data))

Я запускаю этот код с помощью nodejs.Я ожидаю, что вывод будет 45. Но программа просто выполняется в течение 1 секунды и ничего не печатает.Если я удалю заявление о превышении времени, я смогу напечатать 45. Куда я иду не так?

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019

Ваша функция А должна вернуть обещание.

function A() {
  return new Promise((resolve, reject) => setTimeout(() => resolve('hello'), 1000));
}
A().then(data => console.log(data))
0 голосов
/ 26 февраля 2019

Функция A должна возвращать обещание и использовать async / await вместе с IFI (метод немедленного вызова функции)

function A(){
        return new Promise((resolve, reject) => setTimeout(()=>{resolve(100)},1000));
    }
    (async () => {
    var data = await A()
    console.log(data)
    })();
0 голосов
/ 26 февраля 2019

Вам нужно выполнить свое обещание, и тогда return сможет работать.

async function A() {
  await new Promise((resolve, reject) => setTimeout(() => resolve(), 1000));
  return 45;
}
A().then(data => console.log(data))

Вы также можете вернуть обещание из функции A и затем использовать async/await.

function A() {
  return new Promise((resolve, reject) => {
    setTimeout(() => resolve(45), 1000)
  })
}

(async() => {
  const res = await A();
  console.log(res)
})()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...