有一个通过ajax获取长列表的需求,因为不知道列表总长度,所以一次ajax获取100,递归调用ajax函数直到返回为空为止。用callback形式的ajax很好做//假如用jQueryfunction get(p) { $.get(url + "?page=" + p,function(data){ if(data.list.length) { list.push(data.list); page += 1; get(page); } });}var list = [], page = 1 ,url= ".......";get(page)用promise该怎么写?
2 回答
MMMHUHU
TA贡献1834条经验 获得超8个赞
promise不是解决递归的,重点是pipeline,当然如果你知道总数的话大可以Promise.all()
但是如果硬要写的话只是把这个函数包起来就可以了,就是说你其实是一个函数,只干一个事情,可以给看做一个任务
function get(p, deferred) {
deferred || deferred = Promise.defer();
$.get(url + "?page=" + p,function(data){
if(data.list.length) {
list.push(data.list);
page += 1;
get(page,deferred);
}else{
deferred.resolve(list)
}
return deferred.promise;
});
}
get(1, null).then(console.log)
我猜大概可以这样,可以验证下
添加回答
举报
0/150
提交
取消