【发布时间】:2018-12-14 06:27:17
【问题描述】:
我有 4 个 Ajax 函数,第一个是独立的,
但所有其他三个功能都依赖于之前的功能。
真实例子:
我有国家、省、区、镇和路
国家可以直接调用
而所有其他人都必须等到之前的人
我确保所有功能都正常工作并且它们获取数据,
“所以ajax请求没有问题”。
在我尝试了这两种方法之后:
$.when(GetCountry()).then(function(){
GetGovernerate();
}).then(function(){
GetDistrict(GovernerateID);
}).then(GetTown(DistrictID)).then(function(){
GetRoad(TownID)
});
我也试过 done 方法:
$.when(GetCountry()).done(function(){
GetGovernerate();
}).done(function(){
GetDistrict(GovernerateID);
}).done(GetTown(DistrictID)).done(function(){
GetRoad(TownID)
});
结果是他们都得到了治理元素,其余的都没有被调用(解决)。 我查看了控制台是否有任何错误, 但没有什么可显示的。
我为它做了一个解决示例,但这不如回调函数高效:
setTimeOut(function(){
GetGovernerate()
},150,function(){
setTimeOut(function(){
GetDistrict();
},150,function(){
GetTown();
});
});
我已经查看了 jquery 的解释,但我不理解它。 谁能让我更容易理解。
【问题讨论】:
-
如果你想让下一个
then等待,你需要在then()函数中返回promise:.then(function(){ return GetDistrict(GovernerateID)})(假设这些函数返回promise)。 -
stackoverflow.com/users/3874623/mark-meyer 仅适用于地区,但城镇和道路不起作用。
-
stackoverflow.com/users/2630817/just-code 我真的不明白这个想法,这是否意味着在每个函数中我必须执行一个 (var promise = $.Deferred(); /*statement of function*/ then我做了一个回报 promise.Promise() ?)
-
你只需要返回承诺,like this
标签: javascript jquery jquery-deferred