Базовая абстракция: Effect
Чтобы обобщить инициирование сайд эффектов внутри саги всегда [yielding] декларативный эффект. (Вы также можете используя yield
чтобы вернуть Promise
напрямую, но это затруднит тестирование, как мы видели в первом разделе.)
Saga составляет все эти эффекты вместе для реализации желаемого потока управления. Простейшим примером является последовательность Effect-ов возващаемых используя ключевое слово yield
: просто поместив инструктции с использованием ключевого слова yield
в генератор которые будут следовать один за другим. Вы также можете использовать знакомые операторы потока управления (if
, while
, for
) для реализации более сложных потоков управления.
Мы видели, что использование Effect-ов, таких как call
и put
, в сочетании с API высокого уровня, таких как takeEvery
, позволяет нам достичь тех же вещей, что и redux-thunk,
но с дополнительным преимуществом легкого тестирования.
Но redux-saga
дает еще одно преимущество перед redux-thunk
. В дополительном разделе вы столкнетесь с более мощными Effect-ами, которые позволят вам выражать сложные потоки управления, сохраняя при этом приемущество легкого написание тестов.