8

を理解しようとし$.whenていますが、続行する前に複数の deferred を待ちたい場合に役立つことがわかります。$.whenただし、延期されたものを使用するためのユースケースが何であるかを理解しているかどうかはわかりません。説明する:

var deferred = $.Deferred();

// Is this ever useful?
$.when(deferred).then(...)

// Or can I always do this?
deferred.then(...)
4

2 に答える 2

6

$.when [docs]ドキュメントから:

単一の Deferred が に渡された場合jQuery.when、その Promise オブジェクト (Deferred メソッドのサブセット) がメソッドによって返されます。

$.when(deferred).then(...)と同じですdeferred.promise().then(...)

promise オブジェクトは、deferred オブジェクトへの制限されたインターフェイスにすぎません。コールバックを追加できますが、Deferred の状態を変更することはできません (解決、拒否)。

結論として、基本的には、遅延オブジェクトを直接使用する場合$.whenと呼び出す場合に違いはありません。.then

何の利点も得られないため、単一の遅延オブジェクトを明示的にに渡すことは意味がないと思います。$.whenただし、遅延オブジェクトの数が不明な場合もあります。つまり、1 つだけである可能性もあります。

于 2012-06-06T15:42:40.680 に答える
0

と の両方を使用する必要がある場合のショートカットにすぎませ.thenん。.then.done.fail

于 2012-06-06T15:42:13.837 に答える