结果在最终结果中返回未定义,但在axios请求中返回结果

时间:2020-10-17 16:19:10

标签: node.js axios

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

1 个答案:

答案 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一样。