有没有简单的方法来使用承诺进行递归调用。这是我的样品。承诺中的退化呼叫
function getData() {
var result=[];
var deferred = Q.defer();
(function fetchData(pageno){
var options = {
method : 'GET',
url : 'example.com/test',
qs:{
pageNo: pageno
}
}
request(options, function (error, response, body) {
if (error)throw new Error(error);
if (body.hasMorePage == true) { //checking is there next page
result.push(body)
fetchData(++body.pageno); // getting next page data
} else {
deferred.resolve(result); // promise resolve when there is no more page
}
});
})(0);
return deferred.promise;
}
getData().then(function(data){
console.log(data)
});
让我们考虑API在连续调用中提供更多数据。为了收集所有数据,我需要使用前一个调用响应中的某个参数(EX:hasMorePage)。为了获得这种情况,我需要进行回归调用,但我想知道更好的(Promise)方式。
最受欢迎。
无需'Q',你可以用'新希望(...)',你可以使用'async' /'await'到链您的请求(...)'循环。 – ideaboxer
这种情况下,我如何使用for循环,基于前一次调用,我将决定是否需要下一次调用或需要解决它。 –
看到我的答案。它显示了我的想法。 – ideaboxer