现在有一个ajax请求,需要根据这个请求的结果进行判断是否再次请求数据
可能会有多个请求,怎么在这些请求都完成之后再进行操作
更新问题
function queryAreaForMap(areaMap,startCount){
var postData = {
command:"queryArea",
queryCount:5
};
if(startCount){
postData["startCount"] = startCount;
}
var query = $.post(APP.baseUrl,postData).then(function(result){
if(result.response.code === 0){
if(result.data.maxCount > result.data.nextCount) {
return queryAreaForMap(areaMap,result.data.nextCount).then(function(nextResult){
return [].concat(result.data.area,nextResult);
});
}else{
return [];
}
}else{
return [];
}
});
return query;
}
用方法执行时只有两次的结果,但是请求是发了三个
不知道为什么好像少了一次ajax请求的结果
queryAreaForMap().then(function(mm){
alert(JSON.stringify(mm));
alert(mm.length);
});
你这个逻辑没对啊,if (result.data.maxCount > ......) {}
那里面,不需要再 then
啊直接写你的业务逻辑就对了。
按你的逻辑,大概改了下代码
$.post(APP.baseUrl, postData).then(function (result) {
if (result.response.code === 0) {
var areas = result.data.area;
$.each(areas, function (index) {
var area = this;
areaMap[area.id] = area;
});
return result;
} else {
return $.Deferred().reject();
}
}).then(function (result) {
if (result.data.maxCount > result.data.nextCount) {
// do something
}
});
function queryAreaForMap(areaMap, startCount) {
var postData = {
command: "queryArea",
queryCount: 3
};
if (startCount) {
postData["startCount"] = startCount;
}
return $.post(APP.baseUrl, postData).then(function (result) {
console.log(JSON.stringify(result))
if (result.response.code === 0) {
if (result.data.maxCount > result.data.nextCount) {
return queryAreaForMap(areaMap, result.data.nextCount - 1).then(function (nextResult) {
return [].concat(result.data.area, nextResult);
});
} else {
return result.data.area;
}
} else {
return [];
}
});
}
queryAreaForMap().then(function(mm){
console.log(JSON.stringify(mm));
alert(JSON.stringify(mm));
alert(mm.length);
});
自已回答了,这一种方式可以递归查询数据