我有一个模式的网址http://www.data.com/1
,其中末尾的 1 可以一直运行到一个未预定义的数字。它返回一个数组。我需要将我得到的所有数组连接成一个。
我的策略是递归执行 get 请求,直到收到 404 错误,然后返回结果。
var returnArray = [];
function getData(count){
let p = axios.get(`http://www.data.com/${count}`).then(function(response){
returnArray = returnArray.concat(response.data);
return getData(count +1);
}
).catch(function() {
Promise.resolve(returnArray);
}
)};
然而,当我实现这个函数时,我的结果是未定义的。
getData(1).then((response) => console.log(response))
做这个的最好方式是什么?
Inside getData
,您没有返回承诺,因此该函数立即以未定义的值退出。
所以,而不是:
let p = axios.get(`http://www.data.com/${count}`).then(function(response){
use:
return axios.get(`http://www.data.com/${count}`).then(function(response){
编辑:正如 Bergi 指出的,你还需要返回returnArray
within catch
处理程序,因此代替:
Promise.resolve(returnArray);
use:
return returnArray;
这是完整的代码:
var returnArray = [];
function getData(count){
return axios.get(`http://www.data.com/${count}`).then(function(response){
returnArray = returnArray.concat(response.data);
return getData(count +1);
}
).catch(function() {
return returnArray;
}
)};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)