If I have a 2 nested deferred objects and I'm waiting on both to finish, how can I ensure that their then
completes before the outer then
triggers?
$.when($.ajax({
method: 'PUT',
url: someURL,
data: {
// My data
},
callback: function(r) {
var deferred1 = $.Deferred();
var deferred2 = $.Deferred();
$.ajax({
method: 'PUT',
url: url1,
data: {
// My data
}
}).complete(deferred1.resolve);
$.ajax({
method: 'PUT',
url: url2,
data: {
// My data
}
}).complete(deferred2.resolve);
$.when(deferred1, deferred2).then(function() {
self.parent.container.dialog('close').remove();
self.parent.configurator.container.dialog('close').remove();
});
},
})).then(function() {
// Some work; e.g. close a loading spinner
});
With the above code, immediately as deferred1
and deferred2
are resolved, the outer then
is called before the inner then