0
我剛開始考慮es6-promises,我在繞過它時遇到了麻煩。在我的應用程序中,我試圖通過ajax調用返回數據並繼續循環,直到找不到更多數據(實際上是分頁)。使用承諾循環使用ajax功能
這裏是AJAX調用,它返回一個承諾對象:
function getDeals(start, url) {
return Promise.resolve($.ajax({
type: 'GET',
url: url,
data: { start: start },
global: false,
success: function() {},
error: function() {}
}));
}
這裏是包含功能:
var start = 0;
getDeals(start, url).then(function (data) {
// The call returns a more data flag if there are more records
moreData = data.moreData;
start = data.records.count;
}).then(function() {
if (moreData) {
// Here is where I want to continue calling the function
// until no more records are found
getDeals(start, url);
}
});
每個調用返回100條記錄,所以我需要繼續循環通過,直到moreData標誌是錯誤的。另外,不確定承諾方法是否是最有效的方法。
如果你是在服務器端方法的控制,你可以改變MOREDATA以總價然後,而不是等待每個調用來完成,你可以產生多個請求,但你將不得不開始追蹤並增加一點複雜性。 –