jQuery の Deferred で always() を起動するのに問題があります。done() と fail() は正常に動作しますが、always() が起動しないため、何か間違ったことをしているに違いありません。
$. when it works...
var Validator = {
validate_something: function(value) {
var deferred = new $.Deferred();
deferred.resolve();
return deferred.promise();
},
validate_date: function(value) {
var deferred = new $.Deferred();
deferred.resolve();
return deferred.promise();
}
};
function doneCallback() {
console.log("$.then.done() executed");
}
function failCallback() {
console.log("$.then.fail() executed");
}
function alwaysCallback() {
console.log("$.then.always() executed");
}
var validationPromise = $.when(
Validator.validate_date(6).then(doneCallback, failCallback, alwaysCallback),
Validator.validate_something(1).then(doneCallback, failCallback, alwaysCallback)
);
validationPromise.done(function() {
console.log("$.when.done() executed");
});
validationPromise.fail(function() {
console.log("$.when.fail() executed");
});
validationPromise.always(function() {
console.log("$.when.always() executed");
});
http://jsfiddle.net/6j6K2/を参照してください