从异步/等待函数返回值

时间:2020-02-12 03:46:30

标签: javascript async-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 个答案:

答案 0 :(得分:2)

async函数总是返回承诺。 async / await的存在是为了简化使用承诺的语法,而不是消除承诺。

使用async函数的代码将需要在promise上调用.then,或者是async函数本身和await这个promise。

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

  });
const something = await this.getData();

答案 1 :(得分:0)

让我们尝试

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

并运行

showData()

或在console.log(response)函数中将return response;放在getData()之前。

希望对您有帮助