Возвращаемое значение из функции asyn c / await - PullRequest
0 голосов
/ 12 февраля 2020

Я немного запутался, как работает этот асин c / await

У меня есть такие функции, как

async getDataFromDB() {
  let response = await fetch('...');
  let data = await response.json();
  return data;
}

async getData() {
  if (...) {
    let response = await this.getDataFromDB().then((res) => {
       let response = await this.returnHello();
       return response;
    });
    return response;
  } else {
    // ... 
  }
}

returnHello() {
  return 'hello';
}

теперь, когда я console.log(getData()) Должен вернуться 'hello' но вместо этого он возвращает Promise {<pending>}

По сути, мой желаемый результат -

const something = this.getData();

, и строка задана во что-то правильно

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

async функции всегда возврат обещаний. async / await существует для упрощения синтаксиса работы с обещаниями, а не для устранения обещаний.

Код, использующий вашу функцию async, должен будет вызывать .then для обещания, или async сама функция и await обещание.

this.getData()
  .then(something => {

  });
const something = await this.getData();
0 голосов
/ 12 февраля 2020

давайте попробуем

async showData(){
  console.log(await getData())
}

и запустим с

showData()

или поместим console.log(response) перед return response; в getData() функции.

надеюсь, что поможет вам

...