我试图用一个自定义的延迟对象来管理一些回调。 我已经想通了的简单的情况:
var deferred = $.Deferred();
deferred.done(function() {
console.log( 'done' );
});
var json = $.getJSON('/foo');
json.then(
function() {
deferred.resolveWith(this, arguments);
}
);
但是,我需要检查解决/拒绝之前的响应。 我想补充是这样的:
deferred.pipe(
function(response) {
if (response.message === 'error') {
return $.Deferred.reject(response);
}
return response;
}
);
但是,当我这样做,我原来done()
回调总是不管叫。 我敢肯定,这是因为有一次我打电话deferred.resolveWith()
为时已晚,以“回滚”,并把它标记为以后拒绝。 我知道我可以只移动有条件成的第一个参数json.then()
但似乎错过递延对象的点-我认为他们的意思封装所有这些行为到一个地方。
是否有可能把两个条件,并且回调到deferred
,同时还解决其他地方?