【发布时间】:2016-07-08 07:30:10
【问题描述】:
我刚开始研究es6-promises,但我很难理解它。在我的应用程序中,我试图通过 ajax 调用返回数据并继续循环,直到找不到更多数据(本质上是分页)。
这里是返回 promise 对象的 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 标志为 false。此外,不确定 promise 方法是否是最有效的方法。
【问题讨论】:
-
如果您可以控制服务器端方法,您可以将 moreData 更改为 total ,而不是等待每个调用完成,您可以生成多个请求,但是您必须开始跟踪并添加一个有点复杂。
标签: javascript jquery json ajax es6-promise