我正在尝试将来自api获取调用的响应存储在全局变量中。但是,我将结果存储在其中的变量未定义。
我尝试使用async / await解决此问题,但这种情况似乎没有帮助。我似乎进入了一个状态,其中返回了一个未完成的承诺,但这不是期望的结果。
var obj;
async function getEmails() {
let url = "https://api2.frontapp.com/inboxes/xxxxxx/conversations?limit=50";
return fetch(url, {
body: undefined,
method: 'GET',
headers: {
'Host': 'api2.frontapp.com',
'Authorization': 'Bearer xxxxxx',
"Accept": "application/json",
}
})
.then(res => res.json())
.then(response => {
obj = response;
})
}
getEmails();
console.log(obj);
我希望obj返回获取的json数据,但它返回的是undefined。
答案 0 :(得分:0)
问题是您正在尝试在请求完成之前读取响应。 试试这个:
getEmails().then(() => {
console.log(obj);
});
,或者使用await
关键字:
(async () => {
var obj;
async function getEmails() {
let url = "https://api2.frontapp.com/inboxes/xxxxxx/conversations?limit=50";
return fetch(url, {
body: undefined,
method: 'GET',
headers: {
'Host': 'api2.frontapp.com',
'Authorization': 'Bearer xxxxxx',
"Accept": "application/json",
}
})
.then(res => res.json())
.then(response => {
obj = response;
})
}
await getEmails();
console.log(obj);
})();