1. ホーム
  2. jquery

[解決済み] jQueryのディファレンシャルとプロミス - .then() vs .done()

2022-02-02 10:02:30

質問

jQueryのディファレンシャルとプロミスについて読んでいますが .then() &です。 .done() を使用すると、コールバックが成功した場合に 私が知っているのは エリック・ハインズ は、次のように言及しています。 .done().success() は同じ機能にマッピングされますが、おそらく .then() すべてのコールバックは操作の成功時に呼び出されるからです。

どなたか正しい使い方をご教示いただけないでしょうか。

どのように解決するのですか?

に付属するコールバックは done() は、deferred が解決されたときに起動されます。に付けられたコールバックは fail() はディファードが拒否されたときに発行されます。

jQuery 1.8より前のバージョン。 then() は単なる構文上の糖分でした。

promise.then( doneCallback, failCallback )
// was equivalent to
promise.done( doneCallback ).fail( failCallback )

1.8時点では then() のエイリアスです。 pipe() で、新しいプロミスを返します。 ここで の詳細については pipe() .

success()error()jqXHR の呼び出しによって返されるオブジェクトです。 ajax() . の単純なエイリアスです。 done()fail() をそれぞれ作成します。

jqXHR.done === jqXHR.success
jqXHR.fail === jqXHR.error

また done() は単一のコールバックに制限されず、非関数をフィルタリングします (ただし、バージョン 1.8 では文字列に関するバグがあり、1.8.1 では修正されているはずです)。

// this will add fn1 to 7 to the deferred's internal callback list
// (true, 56 and "omg" will be ignored)
promise.done( fn1, fn2, true, [ fn3, [ fn4, 56, fn5 ], "omg", fn6 ], fn7 );

同じく fail() .