Последовательность Saga через yield*

Вы можете использовать встроенный оператор yield* для создания последовательности сагов. Это позволяет вам последовательно выполнять макрозадания в простой процедурном стиле.

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 распространит всю последовательность.

Получившийся итератор (изgame()) даст все значения из вложенных итераторов.

yield* - более мощная альтернатива использующая более общий механизм составления промежуточного слоя1.

1. A more powerful alternative is to use the more generic middleware composition mechanism

results matching ""

    No results matching ""