Posted at

redux-sagaの覚書

More than 1 year has passed since last update.


タスクという概念をReduxに持ち込むための支援ライブラリ


  • タスクとはプロセスのような独立した実行単位

  • それぞれが別々に並行して動作する


redux-sagaがしてくれること


  • タスクの実行環境を用意する

  • 非同期処理をタスクとして記述するための道具たてである作用と非同期処理を同期的に書き下す手段も提供してくれる


作用(Effect)とは


  • 非同期処理を同期的に書き下す手段

  • タスクを記述するためのコマンドのようなもの


一覧


  • select: Stateから必要なデータを取り出す

  • put: Actionをdispatchする

  • take: Actionを待つ、イベントの発生を待つ

  • call: Promiseの完了を待つ

  • fork: 別のタスクを開始する

  • join: 別のタスクの終了を待つ


3つのTake


  • take

  • takeEvery


    • dispatchされたら毎回実行。複数取得にも対応



  • takeLatest


    • 最後の1回のみ実行される。前回のが実行中でもキャンセルされる




ES6のGenerator


  • 任意の時点で処理を中断/再開することができる関数」

  • 一般的にはコルーチン(coroutine)と呼ばれるものでサブルーチン(通常の関数)を一般化したもの


3つのキーワード



  • Generator Function


    • 処理の中断/再開が行われる特殊な関数


      • function* generatorFunction(){}のようにfunction*を使って定義する






  • Generator Object


    • 中断された処理を再開したり、値を取得し対するオブジェクト

    • var generatorObject = generatorFunction()のように取得する




  • yield


    • Generator Functionの中で使われる処理の中断を指定するキーワード