我尝试使用带异步和等待的提取来获取此公共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]。
答案 0 :(得分:2)
您无法以这种方式致电console.log(animals.getAnimalInfo('pig'));
。 animals.getAnimalInfo
返回一个承诺。要获得结果,您应该使用then
回调:
const animals = new FetchAnimalApi();
animals
.getAnimalInfo('pig')
.then(result => console.log(result));