var result = [];
const axios = require("axios");
let XBL = 'LINKREADACTED';
function Status() {
axios.get(XBL).then(res => {
result.push({
core: res.data.CoreServices[0],
payment: res.data.CoreServices[1],
media: res.data.CoreServices[2],
gaming: res.data.CoreServices[3]
});
console.log(result)
});
console.log(result)
//return result;
}
任何人都知道axios
内部如何返回结果
我需要,但就在它外面,它返回undefined
?
答案 0 :(得分:1)
这是与异步调用相关的计时问题。外部结果调用发生在.then
方法内部的结果之前。您可以重构代码块,以便在.then
回调内部进行操作。或者我建议扁平化代码块,而不是使用async / await在回调内部嵌套逻辑。
async function Status() {
const { data } = await axios.get(XBL);
// Happens after receiving response data
result.push({
core: data.CoreServices[0],
payment: data.CoreServices[1],
media: data.CoreServices[2],
gaming: data.CoreServices[3]
});
console.log(result)
return result;
}
请注意,由于Status()
函数现在为async
,它将返回一个可解决结果的Promise(请参见async-await的MDN page上的“ Return Value”部分)
因此,无论您在何处调用Status()
函数,都应await
的结果或使用then()
,就像所有promise一样。