(TIL)Asynchronous&Promise


20.12.22 Asynchronous&Promise
Asynchronous&Promiseセクションでは,非同期と同期に関する概念を学習し,それらを実現した.
ソース:PoiemaWeb
上の図は動機&非動機を区別しやすいようにカフェで注文した場合です.
動機は、受注を実行し、終了するまで次の受注を受け取ることができません.
雨の動機は彼と違って、振動ベルを持って別の場所でやるべきことをしていて、ベルが鳴ったら持って行きます.

Why Asynch?


非同期は、上記の図に示すように、サーバが要求を処理するときに他の操作を実行することができる.
次の図を見ると、動機はすべてのことが終わったときに次のことを処理し、非動機は同時に行われるので、時間的要因にもメリットがあります.

Callback?


よく知られているcallbackは「パラメータで関数を呼び出す」です.
非同期で必要とされる機能を順次動作させるためには,1つ目の動作,2つ目の動作,2つ目の動作,Calbackの概念をよく認識し実現しなければならない.
しかし、このように頻繁にCalbackを実行すると、次のようなことが起こります.
ソース:CodeStates
連続的なインデントは、コードの可読性を低下させ、デバッグが容易ではありません.
だから人々は「私たちはこのように書いてはいけませんか?」と言った.約束しながら、

Promise?



ソース:コードステータス
上の画像は通常のCalback関数とは異なりPromiseで構成されている.
PromiseはCalbackを関数のパラメータにしません.
ただし、新しいインスタンス(Promise)のみが返され、resolveとrejectと呼ばれるPromise独自のコールバックが得られます.
上から見る.thenという方法があります.
これで上図のCalback Hellから抜け出すことができます.

async await


async awaitは最近登場した文法で、Promiseよりも簡潔に使用できます.
ソース:CodeStates
上の画像を見ると上端はPromiseと同じですが下端は見えないあの時
ただし、result、one、two、three、fourにはasync、awaitがそれぞれ含まれており、通常の関数のように使用されます.

以下はAsynchronous&Promiseから派生した概念定理である.


1.実際にはどこで非同期を使用しますか?


もちろん、非動機は非常に広い.今回は3つの点を理解しましょう.

1)時間の経過とともに変化するアニメーションを扱う場合、

  • 使用方法:settimout、setInterval、RequestAnimationFrameなど
    (ここでrequestAnimationFrameは、Front end開発者がWeb上でファッションアニメーションを実現する際に使用しているので、ぜひ勉強してみてください.)
  • 2)ファイルI/O(入出力)

  • で使用される方法:(node.js)fs.readFile, fs.writeFileなど
  • 3)ネットワーク要求

  • で使用する方法:(ブラウザ)fetch(http)、(node.js)httpモジュール、データベースアクセスなど
  • 2. Blocking & Non-Blocking?


    JavaScriptでは、Blocking&Non-Blocking=同期&非同期と考えられます.
    ブロックは、待たなければならない状況を意味します.
    (ちなみにAlertはblockingなのでWebではあまり使われません)
    ブロックなしは、バックグラウンドで実行できることを意味します.
    人々は渋滞が大嫌いだ.特に韓国人!
    この時に画像をロードして彼らの心を癒しましょう!
    このメモを見ると、わが国の人は遅刻が好きではないことがわかります.

    3.重複コールバックが発生したケースはどれらがありますか?


    ファイルをアップロードすると言ったら、あなたは考えます.

    Webにファイルをアップロードする場合は、次の3つの操作を行います.

    1)ファイルI/O


    2)I/O期間のタイムラインアニメーション


    3)ネットワーク要求


    これをコードに書くとこんな感じになりませんか?
    importFile(result => {
    	doAnimation(progress => {
        	uploadFile(result => { 
            
            })
        })
    })

    4.Promise chaning & Promise All?


    どちらも非モチベーションを実現するために使用されるPromiseの形態である.
    差異
    Promise機械:
    Promise All:同時実行のため
    どちらも状況に応じて書けばいいです

    5.Promiseの3つの状態


    - ソース

    1)行列


    2)履行(Fulfilled)


    3)拒絶(拒絶)


    ぜひ知っておきたい.