js 非同期処理 jQuery.Deferred

twcritique

jQuery.DeferredとはjQueryのバージョン1.5から導入された、非同期処理をうまく扱うための標準モジュールです。
爆速でわかるjQuery.Deferred超入門 – Yahoo! JAPAN Tech Blog

非同期処理を連結する際、コールバック地獄から解放される(直列処理、並列処理が可能)
エラー処理をうまく記述できる
一連の非同期処理を関数化して再利用しやすくできる

非同期処理の連結

非同期処理が1つだけの場合、正直なところjQuery.Deferredを使うメリットはありません。jQuery.Deferredの真価は処理を連結できることにあります。
爆速でわかるjQuery.Deferred超入門 – Yahoo! JAPAN Tech Blog

例えるならレゴブロックです。レゴブロックはあの凸と凹を持ってるブロックを自由に組み合わせて、実に様々な物を表現することができますよね。まさにあんな感じです。
結局jQuery.Deferredの何が嬉しいのか分からない、という人向けの小話 – Qiita

Deferredインタフェースを備えた関数を実装するのは極めて簡単です。守らなければならないのはたった1つだけ。それは jQuery.Deferred#promise を返すこと それだけです。
結局jQuery.Deferredの何が嬉しいのか分からない、という人向けの小話 – Qiita

.thenにただの関数を渡している場合、.then()が返すPromiseはひとつ前のPromiseの状態を自動的に引き継ぎます。先頭のdelayHello()が返すPromiseが”resolved”になると、後ろに連結されたPromiseも連鎖的に”resolved”になり、一気に処理されます。
爆速でわかるjQuery.Deferred超入門 – Yahoo! JAPAN Tech Blog

doSomethingを実行する
いつ解決されるのかしらないけど、終わったら…
「成功しました」って出して
jQuery deferredの使い方 – deferredの基本 | CodeGrid

var dfd = jQuery.Deferred();
dfd
.done(function() {
alert(‘Success’);
})
.fail(function() {
alert(‘error’);
});

dfd.resolve(); //「Success」とアラートされる
jQuery.Deferred をもう少し理解する | Foreignkey, Inc.

「ある処理の提供」と「その結果処理」というフェーズの異なる2つのタスクを上手く分離できていることです。
jQuery.Deferred をもう少し理解する | Foreignkey, Inc.

[code lang=javascript] $.when(func(), func(), func()) .done(hello1); [/code]

when()の中がすべてresolovedの場合はresolovedになる。
rejectedが一つでも含まれるの場合はrejectedになる。
jQuery.Deferredについてまとめてみた – 03LOG

deferred.resolve():タスクが正常に終わったことを通知(引数に指定した内容が、done()に引き渡される)
deferred.reject():タスクが異常終了した事を通知(引数に指定した内容が、fail()に引き渡される)
deferred.promise():タスク(タスクをこなしますという約束)
jQuery.Deferredをちゃんと理解する – 1010realのブログ ver2

この場合には、when と呼ばれるメソッドが存在し、全ての promises が正常に満たされた場合のアクションを実行するために使う事が出来ます。
jQueryのDeferredとPromiseで応答性の良いアプリをー基本編 | ゆっくりと…

JavaScript の Promise は Promises/A+ と呼ばれる標準に準拠しています。jQuery ユーザの方は、Deferred になじみ深いと思いますが、Deferred は実は Promise/A+ とは微妙に異なり、要件を満たしていない点にご注意ください。jQuery にはまた、Promise というものもありますが、これは Deferred のサブセットであり、同様の問題があります。
JavaScript Promises: There and back again – HTML5 Rocks

https://matome.naver.jp/odai/2143079960334282001
2019年08月15日