在第一个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;
}
答案 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;
}
这可能会对您有所帮助。