を呼び出します。遅延コール私は、次のJSのメソッドを持ってい
var foo = function() {
var dfd = $.Deferred();
console.log('foo');
dfd.resolve();
return dfd.promise();
};
var ajaxCall1 = function() {
var dfd = $.Deferred();
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
url: 'xxxxxxx',
data: { },
success: function(response) {
dfd.resolve();
}
});
return dfd.promise();
};
var ajaxCall2 = function() {
var dfd = $.Deferred();
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
url: 'xxxxxxx',
data: {},
success: function (response) {
dfd.resolve();
}
});
return dfd.promise();
};
var ajaxCall3 = function() {
var dfd = $.Deferred();
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
url: 'xxxxxxx',
data: {},
success: function (response) {
dfd.resolve();
}
});
return dfd.promise();
};
と、私はこのコードを経由して、それらを呼び出しています:
foo().done(function() {
return ajaxCall1();
}).done(function() {
return ajaxCall2();
}).done(function() {
return ajaxCall3();
});
問題がajaxCall2はの成功の前に呼び出されていることですajaxcall1が発生しました。これを修正する手助けはできますか?私は前のものの成功が起こったときにajaxを1つずつ呼び出す必要があります。
'$ .ajax()'はすでに遅延オブジェクトを返しているので、実際には別のオブジェクトを使用する理由はありません。 'return dfd.promise()'の代わりに 'return $ .ajax({...})'だけです。 –