promise として機能するカスタム js オブジェクトを返す必要があります。つまり、遅延オブジェクトが解決または拒否されたときに、コールバックまたはエラー コールバックをアタッチできます。このオブジェクトには、それ自体が「保留中」でない場合にのみ実行できるカスタム メソッドが必要です。それは次のようなものです:
foo = $.Deferred();
foo.a_method = function() {
// do something only if "this" is resolved or rejected
// throw an exception instead
};
return foo.promise();
上記のコードは機能しません。返される promise には がありませんがa_method
、promise の jQuery のデフォルト メソッドのみがあります。私の考えは今:
var myMixin = {
a_method: function() {
// ...
}
};
return $.extend(foo.promise(), myMixin);
このコードは期待どおりに機能しますが、すべての人に共通しているわけではなく (少なくとも私はそう思います)、理解するのは簡単ではありません。
私がそれを望む理由は、$.when($.ajax('foo'), $.ajax('bar'))
うまく実行するためにいくつかの結合された ajax requests( ) に依存するライブラリがあるからです。そのため、リクエストを実行し、他のコールバックをいくつか添付して、「ドメイン固有の」メソッドを使用してこのチェーンの promise を返します。
より良いアプローチはありますか?