.then()
jQueryの遅延と約束について読んでいるのですが、成功したコールバックに&を使用することの違いがわかりません.done()
。エリック・ハインズ.done()
同じ機能にマップされることが言及されていますが、すべてのコールバックが正常な操作の完了時にすべて呼び出されるため、そうなるので.success()
はないかと推測しています。.then()
正しい使い方を教えていただけませんか?
ベストアンサー1
にアタッチされたコールバックは、done()
遅延オブジェクトが解決されたときに起動されます。 にアタッチされたコールバック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()
。