Эффекты без промежуточного ПО ... Заметка
DEV Community на русском

Эффекты без промежуточного ПО — как этапы конвейера заменяют Thunks и Sagas

Redux обрабатывает асинхронные операции с помощью промежуточного ПО, такого как thunks, sagas и observables, которые отправляют действия в произвольное время без гарантированного порядка. Это создает сложные цепочки отправки, в которых могут возникать проблемы с синхронизацией и порядком, как показано на примерах thunk и saga. Основная проблема заключается в отсутствии в Redux встроенной модели разрешения асинхронного состояния.SDuX Vault устраняет промежуточное ПО, интегрируя разрешение асинхронных входных данных непосредственно в этапы своего конвейера. Этап Resolve нормализует все входные данные, будь то простые значения, промисы, observables или структурированные оболочки, в предсказуемый формат. Это гарантирует, что последующие этапы конвейера всегда получают согласованные данные, свободные от проблем с передачей или синхронизацией.В отличие от Redux thunks, которые отправляют несколько действий и могут непредсказуемо чередоваться, SDuX Vault разрешает отложенные фабрики непосредственно в конвейере. Это разрешение сериализуется, упорядочивается детерминированно и атомарно фиксируется. Подход SDuX Vault включает одно слияние состояний и избегает промежуточных, видимых состояний.Для оркестрации Redux sagas используют генераторы во внешнем слое, тогда как SDuX Vault использует контроллеры в своем слое политики. Контроллеры объявляют политики выполнения до вычислений, обеспечивая четкое разделение от логики преобразования данных. Это контрастирует с sagas, которые отправляют действия для достижения редьюсеров.SDuX Vault гарантирует детерминированное выполнение благодаря архитектурным ограничениям: сериализованной очереди проводника, чистому вычислению конвейера, отложенной атомарной фиксации состояния и структурно невозможной повторной входимости. Они обеспечиваются средой выполнения, предотвращая распространенные ошибки, связанные с асинхронными операциями. Redux полагается на ручные усилия для упорядочивания, в то время как SDuX предоставляет его изначально.