使用 yield* 對 Saga 做排序

你可以使用內建的 yield* 操作符,透過保持順序的方式來組合多個 Saga,可以讓你用一個簡單的程式風格來排序你的 marcro-tasks

function* playLevelOne() { ... }

function* playLevelTwo() { ... }

function* playLevelThree() { ... }

function* game() {
  const score1 = yield* playLevelOne()
  yield put(showScore(score1))

  const score2 = yield* playLevelTwo()
  yield put(showScore(score2))

  const score3 = yield* playLevelThree()
  yield put(showScore(score3))
}

注意,使用 yield* 將導致 JavaScript runtime 擴散到整個序列。由此產生的迭代器(來自 game())將 yield 所有被巢狀化的迭代器裡的值。一個更強大的替代功能是使用更通用的 middleware 組合機制。

results matching ""

    No results matching ""