使用async / await获取fetch返回[object Object]

时间:2017-09-22 22:50:10

标签: javascript asynchronous ecmascript-6 promise

我尝试使用带异步和等待的提取来获取此公共API,但是fetch方法返回了[object Object]:

I类用于获取API:

class FetchAnimalApi {
  async getAnimalInfo(animal) {
    const request = await fetch(`http://my_api_url.com/${animal}`);
    const response = await request.json();

    return `${animal} goes like ${response.sound}`;
  }
}

API返回的结构(如果动物是猪):

{"color": "pink", "sound": "roinc"}

我在另一个文件中导入我的类并将其命名为:

const animals = new FetchAnimalApi();
console.log(animals.getAnimalInfo('pig'));

那么,我做错了什么?

编辑:

现在我的console.log()显示了我想要打印的内容,但是当我返回响应时,我仍然得到[object Object]:

function getInfo() {
  const animals = new FetchAnimalApi();

  return animals.getAnimalInfo('pig').then(result => result);
}

调试时,我意识到在const request = await fetch( http://my_api_url.com/ $ {animal} )行执行后,我的屏幕上正在打印[object Object]。

1 个答案:

答案 0 :(得分:2)

您无法以这种方式致电console.log(animals.getAnimalInfo('pig'));animals.getAnimalInfo返回一个承诺。要获得结果,您应该使用then回调:

const animals = new FetchAnimalApi();
animals
  .getAnimalInfo('pig')
  .then(result => console.log(result));