【发布时间】:2021-03-24 18:09:05
【问题描述】:
像下面的代码 sn-p 那样返回数据而不是 promise 对象的正确方法是什么?
const getData = async () => {
try {
const res = await fetch(API_ENDPOINT);
const data = res.json();
return data;
} catch (error) {
ToastAndroid.show(error, ToastAndroid.LONG);
}
};
console.log(getGeneralData());
【问题讨论】:
-
因为
Body.prototype.json仍然返回一个Promise,所以无论如何你都需要await res.json()。 -
它仍然返回一个承诺
-
正如塞巴斯蒂安所说,你需要
const data = await res.json(); -
@MikeWazowksi 你的问题是
getGeneralData()。你的意思是getData()吗?无论如何,我认为你在这里别无选择。.then只能在async函数内部避免(或者如果引擎支持 top-level await 并且 JS 在模块中,则全局避免)。或者,您可以使用(async () => { console.log(await getData()); })();。
标签: javascript asynchronous async-await fetch