有沒有簡單的方法來使用承諾進行遞歸調用。這是我的樣品。承諾中的退化呼叫
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