push(... x)返回未定义,但push(x)返回结果

时间:2019-04-09 09:27:15

标签: javascript node.js react-native

在第一个push(... result.value)中有效,但在第二个(push(... nn))中无效,但是当我将其替换为push(nn)时,结果不同比我预期的要好。

FetchReq = (req) =>{
        let res = [];
        this.SendRequest(req).then(result=>{
            const next = result.valueOf()["@odata.nextLink"];

            res.push(...result.value); // it work

            if(next){
                let nn = this.FetchReq(next);
                console.log(nn);  
                res.push(...nn); //it doesn't !!!!
                console.log(res);

            } 
        });

        return res;

    }

1 个答案:

答案 0 :(得分:0)

因为此let nn = this.FetchReq(next);行正在作为异步操作运行。此方法需要一些时间才能从method / api获得响应。要解决此问题,可以使用promise / async,await和callback方法。
下面是使用async / await给出的示例之一。

FetchReq = async (req) => {
        let res = [];
        await this.SendRequest(req).then(async (result) =>{ //this is important
            const next = result.valueOf()["@odata.nextLink"];

            res.push(...result.value); // it work

            if(next){
                let nn = await this.FetchReq(next);
                console.log(nn);  
                res.push(...nn); 
                console.log(res);

            } 
        });

        return res;

    }

这可能会对您有所帮助。