我尝试在函数(a)完成后调用函数(b)。 但是在功能(a)完成之前出现警报消息。 你的出色解决方案将受到尊重。
$.ajax({
url : "action.do",
.....code....
}).done(function(a){
...code...
}).then(function(b){
alert("hello");
});
答案 0 :(得分:1)
done
不能像正确的承诺then
函数那样工作。要执行此操作,您需要使用then
,并确保从ajax
电话中返回承诺,例如:
$.ajax({
url : "action.do",
// .....code....
}).then(function(a){
// ^^^^
return $.ajax({
// ^^^^^^
url : "action.do",
// .....code....
});
}).then(function(b){
alert("hello");
});
我相信你至少需要jQuery v1.8,但仔细检查你正在使用的版本,在多个版本中有很多工作来制作jQuery的Deferred
并且承诺与承诺/ A +规范和(因此)ES2015(又名“ES6”)规范的承诺。
答案 1 :(得分:-1)
因为then()总是在.done()
之前.done()只有一个回调,它是成功回调
.then()同时有成功和失败的回调
答案 2 :(得分:-1)
.then()用于操纵承诺。它有2个回调,成功和失败。这样做是.then()的成功回调函数。
您可以通过以下两种方式修改代码:
$.ajax({
url : "action.do",
.....code....
}).done(function(a){
...code...
alert("hello");
});
或
$.ajax({
url : "action.do",
.....code....
}).then(function(b){
alert("hello");
});
理想情况下.then()类似于以下代码:
.then(function(){
...success case...(.done() scenario)
},function(){
...failure case... (.fail() scenario)
});