【发布时间】:2020-04-21 04:34:09
【问题描述】:
在第一个示例中,我使用ajax 使用XMLHttpRequest 获取数据,它工作正常
示例 1
let req = new XMLHttpRequest();
req.open(
"GET",
"https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/global-temperature.json"
);
let res = {};
req.onload = () => {
res = JSON.parse(req.responseText);
};
req.send();
window.onload = _ => {
console.log(res);
};
但我想使用async 函数在单个function 中保存和最小化我的代码
这就是我尝试的方法
示例 2
async function res() {
let req = new XMLHttpRequest();
req.open(
"GET",
"https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/global-temperature.json"
);
let res = {};
req.onload = () => {
res = JSON.parse(req.responseText);
};
req.send();
return await res;
}
window.onload = _ => {
console.log(res());
};
但是log 每次都在console 中
Promise {<pending>}
【问题讨论】:
-
您正在等待
res变量,它是一个空对象。 -
但我试图从这部分获得它的价值
req.onload = () => { res = JSON.parse(req.responseText); }; -
或者更简单的说
res().then(response => { console.log(response) }).catch(() => { alert("bad stuff"); }) -
@BRO_THOM 它打印空对象
-
我的错,我以为我看到你在第二个 sn-p 中使用
Fetch,但你仍在使用XMLHttpRequest- 你需要将代码放在req.onload函数中, 因为onload是你的请求完成后执行的代码。
标签: javascript ajax async-await