我需要返回一个作为承诺的自定义 js 对象,即,当延迟被解决或拒绝时,我可以附加回调或错误回调。我需要在这个对象中使用一些自定义方法,只有当它本身不是“挂起”时才能运行。它是这样的:
foo = $.Deferred();
foo.a_method = function() {
// do something only if "this" is resolved or rejected
// throw an exception instead
};
return foo.promise();
上面的代码不起作用,返回的承诺没有a_method
,而只有 jQuery 的默认承诺方法。我现在的想法是:
var myMixin = {
a_method: function() {
// ...
}
};
return $.extend(foo.promise(), myMixin);
该代码按预期工作,但并不是每个人都通用(至少,我认为),而且理解起来也不是很简单。
我想要它的原因是我有一个依赖于一些加入的 ajax requests( $.when($.ajax('foo'), $.ajax('bar'))
) 的库,以便能够很好地执行。所以我执行请求,附加一些其他回调,并使用“特定于域”的方法返回这个链的承诺。
有更好的方法吗?