Are you over 18 and want to see adult content?
More Annotations
![A complete backup of ccsint-niklaas.be](https://www.archivebay.com/archive2/7cc14dbf-acf5-4e05-8270-0e18d82f18ee.png)
A complete backup of ccsint-niklaas.be
Are you over 18 and want to see adult content?
![A complete backup of psychologists.bc.ca](https://www.archivebay.com/archive2/49de92de-debc-46ef-bf9a-9ca6b1c20f7d.png)
A complete backup of psychologists.bc.ca
Are you over 18 and want to see adult content?
![A complete backup of theedgeatcitypark.com](https://www.archivebay.com/archive2/177178fa-b8dc-48e0-aefe-f6c1783089f8.png)
A complete backup of theedgeatcitypark.com
Are you over 18 and want to see adult content?
![A complete backup of alahednews.com.lb](https://www.archivebay.com/archive2/2a29902a-a1f3-4000-88ff-47d6a5ff772f.png)
A complete backup of alahednews.com.lb
Are you over 18 and want to see adult content?
Favourite Annotations
![Online PHP Interpreter | Write and Run PHP code Online](https://www.archivebay.com/archive/a66f956d-a212-42a5-8917-a5f41edaad75.png)
Online PHP Interpreter | Write and Run PHP code Online
Are you over 18 and want to see adult content?
![Hackney Cycles | Bike store | Bike Sales Repairs | Fixie Single Speed](https://www.archivebay.com/archive/abfd2ed0-47a8-4d30-9e03-4cde0bc5bfd8.png)
Hackney Cycles | Bike store | Bike Sales Repairs | Fixie Single Speed
Are you over 18 and want to see adult content?
![Case e appartamenti in vendita e in affitto - Annunci immobiliari su Casa.it](https://www.archivebay.com/archive/cbbdd1a3-caee-4b79-a272-2dce96ac1f5a.png)
Case e appartamenti in vendita e in affitto - Annunci immobiliari su Casa.it
Are you over 18 and want to see adult content?
![Smart Canvas - 動画広告・リッチメディア広告配信プラットフォーム](https://www.archivebay.com/archive/da99c055-9327-406c-9ce1-02699042d454.png)
Smart Canvas - 動画広告・リッチメディア広告配信プラットフォーム
Are you over 18 and want to see adult content?
![Buy School Uniforms, Shoes, Bags, Books, Costumes | School Kits](https://www.archivebay.com/archive/e3f42bce-5a6d-42ba-886f-d242589d1984.png)
Buy School Uniforms, Shoes, Bags, Books, Costumes | School Kits
Are you over 18 and want to see adult content?
![ThemeHouse — XenForo & Wordpress themes and add-ons – ThemeHouse](https://www.archivebay.com/archive/4443d351-ef96-4fb6-9f70-384e8718d1e6.png)
ThemeHouse — XenForo & Wordpress themes and add-ons – ThemeHouse
Are you over 18 and want to see adult content?
![Best taobao agent english website that accepts paypal | Taobao Agent Bhiner](https://www.archivebay.com/archive/266edfe4-af5b-4052-8988-1cc692feee91.png)
Best taobao agent english website that accepts paypal | Taobao Agent Bhiner
Are you over 18 and want to see adult content?
![Following Jesus - AllAboutFollowingJesus.org](https://www.archivebay.com/archive/73af8fbd-ea3f-493e-8834-43532c0b35bf.png)
Following Jesus - AllAboutFollowingJesus.org
Are you over 18 and want to see adult content?
Text
такие
1.1 РУКОВОДСТВО ДЛЯ НАЧИНАЮЩИХ 2.1. ИСПОЛЬЗОВАНИЕ ХЕЛПЕРОВ SAGA Unlike takeEvery, takeLatest allows only one fetchData task to run at any moment. And it will be the latest started task. If a previous task is still running when another fetchData task is started, the previous task will be automatically cancelled.. If you have multiple Sagas watching for different actions, you can create multiple watchers with those built-in helpers, which will behave like 2.2 ДЕКЛАРАТИВНЫЕ ЭФФЕКТЫ If you finish a test without answering those two questions, you don’t have a real unit test. You have a sloppy, half-baked test. What we actually need to do is make sure the fetchProducts task yields a call with the right function and the right arguments.. Instead of invoking the asynchronous function directly from inside the Generator, we can yield only a description of the function4. РЕЦЕПТЫ
5. ВНЕШНИЕ РЕСУРСЫ Redux Hero Part 4: Every Hero Needs a Villain (A Fun Introduction to redux-saga.js) Modelling common patterns with redux-saga by ChanakyaBhardwaj
6. ИСПРАВЛЕНИЕ ПРОБЛЕМ It will put the application into an infinite loop because take() only creates a description of the effect. Unless you yield it for the middleware to execute, the while loop will behave like a regular while loop, and freeze your application.. Adding yield will pause the generator and return control to the Redux Saga middleware which willexecute the effect.
3.13 ШАБЛОНЫ КОРНЕВОЙ САГИ 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с REDUX-SAGA - AN INTUITIVE REDUX SIDE EFFECT MANAGERREAD ME4. RECIPES5. EXTERNAL RESOURCES6. TROUBLESHOOTING7. GLOSSARY8. API REFERENCE Redux-Saga. An intuitive Redux side effect manager. Easy to manage, easy to test, and executes efficiently. READ ME · REDUX-SAGA redux-saga. redux-saga is a library that aims to make application side effects (i.e. asynchronous things like data fetching and impure things like accessing the browser cache) easier to manage, more efficient to execute, easy to test, and better at handling failures.. The mental model is that a saga is like a separate thread in your application that's solely responsible for side effects. ГЛАВНАЯ СТРАНИЦА redux-saga. . redux-saga — это библиотека, которая призвана упростить и улучшить побочные эффекты (т.е. такие действия, как асинхронные операции, например, загрузки данных, и "грязные" действия,такие
1.1 РУКОВОДСТВО ДЛЯ НАЧИНАЮЩИХ 2.1. ИСПОЛЬЗОВАНИЕ ХЕЛПЕРОВ SAGA Unlike takeEvery, takeLatest allows only one fetchData task to run at any moment. And it will be the latest started task. If a previous task is still running when another fetchData task is started, the previous task will be automatically cancelled.. If you have multiple Sagas watching for different actions, you can create multiple watchers with those built-in helpers, which will behave like 2.2 ДЕКЛАРАТИВНЫЕ ЭФФЕКТЫ If you finish a test without answering those two questions, you don’t have a real unit test. You have a sloppy, half-baked test. What we actually need to do is make sure the fetchProducts task yields a call with the right function and the right arguments.. Instead of invoking the asynchronous function directly from inside the Generator, we can yield only a description of the function4. РЕЦЕПТЫ
5. ВНЕШНИЕ РЕСУРСЫ Redux Hero Part 4: Every Hero Needs a Villain (A Fun Introduction to redux-saga.js) Modelling common patterns with redux-saga by ChanakyaBhardwaj
6. ИСПРАВЛЕНИЕ ПРОБЛЕМ It will put the application into an infinite loop because take() only creates a description of the effect. Unless you yield it for the middleware to execute, the while loop will behave like a regular while loop, and freeze your application.. Adding yield will pause the generator and return control to the Redux Saga middleware which willexecute the effect.
3.13 ШАБЛОНЫ КОРНЕВОЙ САГИ 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas сBEGINNER TUTORIAL
The initial setup#. Before we start, clone the tutorial repository. The final code of this tutorial is located in the sagas branch. Then in the command line, run: $ cd redux-saga-beginner-tutorial. $ npm install. Copy. To start the application, run: $ npm start. CHANNELS | REDUX-SAGA The first argument in eventChannel is a subscriber function. The role of the subscriber is to initialize the external event source (above using setInterval), then routes all incoming events from the source to the channel by invoking the supplied emitter.In the above example we're invoking emitter on each second.. Note: You need to sanitize your event sources as to not pass null or undefined ROOT SAGA | REDUX-SAGA Root Saga Patterns. There is another popular pattern when designing root saga: nesting fork effects in an all effect. By doing so, you can get an array of task descriptors, and the code after the all effect will be executed immediately because each fork effect is non-blocking and synchronously returning a task descriptor.. Note that though fork effects are nested in an all effect, they are3.10 ПРИМЕРЫ
This is a feature currently in the v1.0.0-beta release. This would provide a native way to perform integration like testing without one of the above libraries. The idea is that yo 7. ГЛОССАРИЙ A Blocking call means that the Saga yielded an Effect and will wait for the outcome of its execution before resuming to the next instruction inside the yielding Generator. 2.3 ОТПРАВКА ДЕЙСТВИЙ Note how we pass the fake response to the Generator via its next method. Outside the middleware environment, we have total control over the Generator, we can simulate a real environment by mocking results and resuming the Generator with them. 3.7 ОТМЕНА ЗАДАЧ In the above example, cancellation of bgSyncTask will cause the Generator to jump to the finally block. Here you can use yield cancelled() to check if the Generator has been cancelled or not.. Cancelling a running task will also cancel the current Effect where the task is blocked at the moment of cancellation. 3.6 КОМПОЗИЦИЯ SAGAS 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с 3.12 ИСПОЛЬЗОВАНИЕ КАНАЛОВ Русский перевод Redux Saga. Русский перевод Redux Saga1. ВВЕДЕНИЕ
Русский перевод Redux Saga. Главная страница. Содержание REDUX-SAGA - AN INTUITIVE REDUX SIDE EFFECT MANAGERREAD ME4. RECIPES5. EXTERNAL RESOURCES6. TROUBLESHOOTING7. GLOSSARY8. API REFERENCE Redux-Saga. An intuitive Redux side effect manager. Easy to manage, easy to test, and executes efficiently. READ ME · REDUX-SAGA redux-saga. redux-saga is a library that aims to make application side effects (i.e. asynchronous things like data fetching and impure things like accessing the browser cache) easier to manage, more efficient to execute, easy to test, and better at handling failures.. The mental model is that a saga is like a separate thread in your application that's solely responsible for side effects. ГЛАВНАЯ СТРАНИЦА redux-saga. . redux-saga — это библиотека, которая призвана упростить и улучшить побочные эффекты (т.е. такие действия, как асинхронные операции, например, загрузки данных, и "грязные" действия,такие
1.1 РУКОВОДСТВО ДЛЯ НАЧИНАЮЩИХ 2.1. ИСПОЛЬЗОВАНИЕ ХЕЛПЕРОВ SAGA Unlike takeEvery, takeLatest allows only one fetchData task to run at any moment. And it will be the latest started task. If a previous task is still running when another fetchData task is started, the previous task will be automatically cancelled.. If you have multiple Sagas watching for different actions, you can create multiple watchers with those built-in helpers, which will behave like 2.2 ДЕКЛАРАТИВНЫЕ ЭФФЕКТЫ If you finish a test without answering those two questions, you don’t have a real unit test. You have a sloppy, half-baked test. What we actually need to do is make sure the fetchProducts task yields a call with the right function and the right arguments.. Instead of invoking the asynchronous function directly from inside the Generator, we can yield only a description of the function4. РЕЦЕПТЫ
5. ВНЕШНИЕ РЕСУРСЫ Redux Hero Part 4: Every Hero Needs a Villain (A Fun Introduction to redux-saga.js) Modelling common patterns with redux-saga by ChanakyaBhardwaj
6. ИСПРАВЛЕНИЕ ПРОБЛЕМ It will put the application into an infinite loop because take() only creates a description of the effect. Unless you yield it for the middleware to execute, the while loop will behave like a regular while loop, and freeze your application.. Adding yield will pause the generator and return control to the Redux Saga middleware which willexecute the effect.
3.13 ШАБЛОНЫ КОРНЕВОЙ САГИ 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с REDUX-SAGA - AN INTUITIVE REDUX SIDE EFFECT MANAGERREAD ME4. RECIPES5. EXTERNAL RESOURCES6. TROUBLESHOOTING7. GLOSSARY8. API REFERENCE Redux-Saga. An intuitive Redux side effect manager. Easy to manage, easy to test, and executes efficiently. READ ME · REDUX-SAGA redux-saga. redux-saga is a library that aims to make application side effects (i.e. asynchronous things like data fetching and impure things like accessing the browser cache) easier to manage, more efficient to execute, easy to test, and better at handling failures.. The mental model is that a saga is like a separate thread in your application that's solely responsible for side effects. ГЛАВНАЯ СТРАНИЦА redux-saga. . redux-saga — это библиотека, которая призвана упростить и улучшить побочные эффекты (т.е. такие действия, как асинхронные операции, например, загрузки данных, и "грязные" действия,такие
1.1 РУКОВОДСТВО ДЛЯ НАЧИНАЮЩИХ 2.1. ИСПОЛЬЗОВАНИЕ ХЕЛПЕРОВ SAGA Unlike takeEvery, takeLatest allows only one fetchData task to run at any moment. And it will be the latest started task. If a previous task is still running when another fetchData task is started, the previous task will be automatically cancelled.. If you have multiple Sagas watching for different actions, you can create multiple watchers with those built-in helpers, which will behave like 2.2 ДЕКЛАРАТИВНЫЕ ЭФФЕКТЫ If you finish a test without answering those two questions, you don’t have a real unit test. You have a sloppy, half-baked test. What we actually need to do is make sure the fetchProducts task yields a call with the right function and the right arguments.. Instead of invoking the asynchronous function directly from inside the Generator, we can yield only a description of the function4. РЕЦЕПТЫ
5. ВНЕШНИЕ РЕСУРСЫ Redux Hero Part 4: Every Hero Needs a Villain (A Fun Introduction to redux-saga.js) Modelling common patterns with redux-saga by ChanakyaBhardwaj
6. ИСПРАВЛЕНИЕ ПРОБЛЕМ It will put the application into an infinite loop because take() only creates a description of the effect. Unless you yield it for the middleware to execute, the while loop will behave like a regular while loop, and freeze your application.. Adding yield will pause the generator and return control to the Redux Saga middleware which willexecute the effect.
3.13 ШАБЛОНЫ КОРНЕВОЙ САГИ 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas сBEGINNER TUTORIAL
The initial setup#. Before we start, clone the tutorial repository. The final code of this tutorial is located in the sagas branch. Then in the command line, run: $ cd redux-saga-beginner-tutorial. $ npm install. Copy. To start the application, run: $ npm start. CHANNELS | REDUX-SAGA The first argument in eventChannel is a subscriber function. The role of the subscriber is to initialize the external event source (above using setInterval), then routes all incoming events from the source to the channel by invoking the supplied emitter.In the above example we're invoking emitter on each second.. Note: You need to sanitize your event sources as to not pass null or undefined ROOT SAGA | REDUX-SAGA Root Saga Patterns. There is another popular pattern when designing root saga: nesting fork effects in an all effect. By doing so, you can get an array of task descriptors, and the code after the all effect will be executed immediately because each fork effect is non-blocking and synchronously returning a task descriptor.. Note that though fork effects are nested in an all effect, they are3.10 ПРИМЕРЫ
This is a feature currently in the v1.0.0-beta release. This would provide a native way to perform integration like testing without one of the above libraries. The idea is that yo 7. ГЛОССАРИЙ A Blocking call means that the Saga yielded an Effect and will wait for the outcome of its execution before resuming to the next instruction inside the yielding Generator. 2.3 ОТПРАВКА ДЕЙСТВИЙ Note how we pass the fake response to the Generator via its next method. Outside the middleware environment, we have total control over the Generator, we can simulate a real environment by mocking results and resuming the Generator with them. 3.7 ОТМЕНА ЗАДАЧ In the above example, cancellation of bgSyncTask will cause the Generator to jump to the finally block. Here you can use yield cancelled() to check if the Generator has been cancelled or not.. Cancelling a running task will also cancel the current Effect where the task is blocked at the moment of cancellation. 3.6 КОМПОЗИЦИЯ SAGAS 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с 3.12 ИСПОЛЬЗОВАНИЕ КАНАЛОВ Русский перевод Redux Saga. Русский перевод Redux Saga1. ВВЕДЕНИЕ
Русский перевод Redux Saga. Главная страница. Содержание REDUX-SAGA - AN INTUITIVE REDUX SIDE EFFECT MANAGERREAD ME4. RECIPES5. EXTERNAL RESOURCES6. TROUBLESHOOTING7. GLOSSARY8. API REFERENCE Redux-Saga. An intuitive Redux side effect manager. Easy to manage, easy to test, and executes efficiently. READ ME · REDUX-SAGA redux-saga. redux-saga is a library that aims to make application side effects (i.e. asynchronous things like data fetching and impure things like accessing the browser cache) easier to manage, more efficient to execute, easy to test, and better at handling failures.. The mental model is that a saga is like a separate thread in your application that's solely responsible for side effects. ГЛАВНАЯ СТРАНИЦА redux-saga. . redux-saga — это библиотека, которая призвана упростить и улучшить побочные эффекты (т.е. такие действия, как асинхронные операции, например, загрузки данных, и "грязные" действия,такие
3.1 ПОЛУЧЕНИЕ БУДУЩИХ ДЕЙСТВИЙ The take is just like call and put we saw earlier. It creates another command object that tells the middleware to wait for a specific action. The resulting behavior of the call Effect is the same as when the middleware suspends the Generator until a Promise resolves. In the take case, it'll suspend the Generator until a matching action is dispatched. In the above example, watchAndLog is 2.2 ДЕКЛАРАТИВНЫЕ ЭФФЕКТЫ If you finish a test without answering those two questions, you don’t have a real unit test. You have a sloppy, half-baked test. What we actually need to do is make sure the fetchProducts task yields a call with the right function and the right arguments.. Instead of invoking the asynchronous function directly from inside the Generator, we can yield only a description of the function 7. ГЛОССАРИЙ A Blocking call means that the Saga yielded an Effect and will wait for the outcome of its execution before resuming to the next instruction inside the yielding Generator.3.10 ПРИМЕРЫ
This is a feature currently in the v1.0.0-beta release. This would provide a native way to perform integration like testing without one of the above libraries. The idea is that yo4. РЕЦЕПТЫ
3.13 ШАБЛОНЫ КОРНЕВОЙ САГИ 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с 3.7 ОТМЕНА ЗАДАЧ In the above example, cancellation of bgSyncTask will cause the Generator to jump to the finally block. Here you can use yield cancelled() to check if the Generator has been cancelled or not.. Cancelling a running task will also cancel the current Effect where the task is blocked at the moment of cancellation. REDUX-SAGA - AN INTUITIVE REDUX SIDE EFFECT MANAGERREAD ME4. RECIPES5. EXTERNAL RESOURCES6. TROUBLESHOOTING7. GLOSSARY8. API REFERENCE Redux-Saga. An intuitive Redux side effect manager. Easy to manage, easy to test, and executes efficiently.BEGINNER TUTORIAL
The initial setup#. Before we start, clone the tutorial repository. The final code of this tutorial is located in the sagas branch. Then in the command line, run: $ cd redux-saga-beginner-tutorial. $ npm install. Copy. To start the application, run: $ npm start. READ ME · REDUX-SAGA redux-saga. redux-saga is a library that aims to make application side effects (i.e. asynchronous things like data fetching and impure things like accessing the browser cache) easier to manage, more efficient to execute, easy to test, and better at handling failures.. The mental model is that a saga is like a separate thread in your application that's solely responsible for side effects. ГЛАВНАЯ СТРАНИЦА redux-saga. . redux-saga — это библиотека, которая призвана упростить и улучшить побочные эффекты (т.е. такие действия, как асинхронные операции, например, загрузки данных, и "грязные" действия,такие
3.1 ПОЛУЧЕНИЕ БУДУЩИХ ДЕЙСТВИЙ The take is just like call and put we saw earlier. It creates another command object that tells the middleware to wait for a specific action. The resulting behavior of the call Effect is the same as when the middleware suspends the Generator until a Promise resolves. In the take case, it'll suspend the Generator until a matching action is dispatched. In the above example, watchAndLog is 2.2 ДЕКЛАРАТИВНЫЕ ЭФФЕКТЫ If you finish a test without answering those two questions, you don’t have a real unit test. You have a sloppy, half-baked test. What we actually need to do is make sure the fetchProducts task yields a call with the right function and the right arguments.. Instead of invoking the asynchronous function directly from inside the Generator, we can yield only a description of the function 7. ГЛОССАРИЙ A Blocking call means that the Saga yielded an Effect and will wait for the outcome of its execution before resuming to the next instruction inside the yielding Generator. 3.13 ШАБЛОНЫ КОРНЕВОЙ САГИ 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с 3.7 ОТМЕНА ЗАДАЧ In the above example, cancellation of bgSyncTask will cause the Generator to jump to the finally block. Here you can use yield cancelled() to check if the Generator has been cancelled or not.. Cancelling a running task will also cancel the current Effect where the task is blocked at the moment of cancellation.3.10 ПРИМЕРЫ
This is a feature currently in the v1.0.0-beta release. This would provide a native way to perform integration like testing without one of the above libraries. The idea is that yoBEGINNER TUTORIAL
The initial setup#. Before we start, clone the tutorial repository. The final code of this tutorial is located in the sagas branch. Then in the command line, run: $ cd redux-saga-beginner-tutorial. $ npm install. Copy. To start the application, run: $ npm start. CHANNELS | REDUX-SAGA The first argument in eventChannel is a subscriber function. The role of the subscriber is to initialize the external event source (above using setInterval), then routes all incoming events from the source to the channel by invoking the supplied emitter.In the above example we're invoking emitter on each second.. Note: You need to sanitize your event sources as to not pass null or undefinedDECLARATIVE EFFECTS
Put another way, the Generator will yield plain Objects containing instructions, and the redux-saga middleware will take care of executing those instructions and giving back the result of their execution to the Generator. This way, when testing the Generator, all we need to do is to check that it yields the expected instruction by doing a simple deepEqual on the yielded Object.TASK CANCELLATION
In the above example, cancellation of bgSyncTask will use Generator.prototype.return to make the Generator jump directly to the finally block. Here you can use yield cancelled() to check if the Generator has been cancelled or not.. Cancelling a running task will also cancel the current Effect where the task is blocked at the momentof cancellation.
RACING EFFECTS
The race Effect offers a way of triggering a race between multiple Effects. The following sample shows a task that triggers a remote fetch request, and constrains the response within a 1 second timeout. import { race, call, put, delay } from 'redux-saga/effects'. function* fetchPostsWithTimeout() {. const {posts, timeout} = yield race({. 2.1. ИСПОЛЬЗОВАНИЕ ХЕЛПЕРОВ SAGA Unlike takeEvery, takeLatest allows only one fetchData task to run at any moment. And it will be the latest started task. If a previous task is still running when another fetchData task is started, the previous task will be automatically cancelled.. If you have multiple Sagas watching for different actions, you can create multiple watchers with those built-in helpers, which will behave like 1.1 РУКОВОДСТВО ДЛЯ НАЧИНАЮЩИХ Цели этого урока. Это руководство попытается представить redux-saga в (надеюсь) доступной форме. Для нашего начального урока мы будем использовать обычный демо-счётчик из 2.3 ОТПРАВКА ДЕЙСТВИЙ Note how we pass the fake response to the Generator via its next method. Outside the middleware environment, we have total control over the Generator, we can simulate a real environment by mocking results and resuming the Generator with them. 3.2 НЕБЛОКИРУЮЩИЕ ВЫЗВЫ So far we have all needed Effects in order to implement the above flow. We can wait for specific actions in the store using the take Effect. We can make asynchronous calls using the call Effect. Finally, we can dispatch actions to the store using the put Effect.. So let'sgive it a try:
3.6 КОМПОЗИЦИЯ SAGAS 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с REDUX-SAGA - AN INTUITIVE REDUX SIDE EFFECT MANAGERREAD ME4. RECIPES5. EXTERNAL RESOURCES6. TROUBLESHOOTING7. GLOSSARY8. API REFERENCE Redux-Saga. An intuitive Redux side effect manager. Easy to manage, easy to test, and executes efficiently.BEGINNER TUTORIAL
The initial setup#. Before we start, clone the tutorial repository. The final code of this tutorial is located in the sagas branch. Then in the command line, run: $ cd redux-saga-beginner-tutorial. $ npm install. Copy. To start the application, run: $ npm start. READ ME · REDUX-SAGA redux-saga. redux-saga is a library that aims to make application side effects (i.e. asynchronous things like data fetching and impure things like accessing the browser cache) easier to manage, more efficient to execute, easy to test, and better at handling failures.. The mental model is that a saga is like a separate thread in your application that's solely responsible for side effects. ГЛАВНАЯ СТРАНИЦА redux-saga. . redux-saga — это библиотека, которая призвана упростить и улучшить побочные эффекты (т.е. такие действия, как асинхронные операции, например, загрузки данных, и "грязные" действия,такие
3.1 ПОЛУЧЕНИЕ БУДУЩИХ ДЕЙСТВИЙ The take is just like call and put we saw earlier. It creates another command object that tells the middleware to wait for a specific action. The resulting behavior of the call Effect is the same as when the middleware suspends the Generator until a Promise resolves. In the take case, it'll suspend the Generator until a matching action is dispatched. In the above example, watchAndLog is 2.2 ДЕКЛАРАТИВНЫЕ ЭФФЕКТЫ If you finish a test without answering those two questions, you don’t have a real unit test. You have a sloppy, half-baked test. What we actually need to do is make sure the fetchProducts task yields a call with the right function and the right arguments.. Instead of invoking the asynchronous function directly from inside the Generator, we can yield only a description of the function 7. ГЛОССАРИЙ A Blocking call means that the Saga yielded an Effect and will wait for the outcome of its execution before resuming to the next instruction inside the yielding Generator. 3.13 ШАБЛОНЫ КОРНЕВОЙ САГИ 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с 3.7 ОТМЕНА ЗАДАЧ In the above example, cancellation of bgSyncTask will cause the Generator to jump to the finally block. Here you can use yield cancelled() to check if the Generator has been cancelled or not.. Cancelling a running task will also cancel the current Effect where the task is blocked at the moment of cancellation.3.10 ПРИМЕРЫ
This is a feature currently in the v1.0.0-beta release. This would provide a native way to perform integration like testing without one of the above libraries. The idea is that yo REDUX-SAGA - AN INTUITIVE REDUX SIDE EFFECT MANAGERREAD ME4. RECIPES5. EXTERNAL RESOURCES6. TROUBLESHOOTING7. GLOSSARY8. API REFERENCE Redux-Saga. An intuitive Redux side effect manager. Easy to manage, easy to test, and executes efficiently.BEGINNER TUTORIAL
The initial setup#. Before we start, clone the tutorial repository. The final code of this tutorial is located in the sagas branch. Then in the command line, run: $ cd redux-saga-beginner-tutorial. $ npm install. Copy. To start the application, run: $ npm start. READ ME · REDUX-SAGA redux-saga. redux-saga is a library that aims to make application side effects (i.e. asynchronous things like data fetching and impure things like accessing the browser cache) easier to manage, more efficient to execute, easy to test, and better at handling failures.. The mental model is that a saga is like a separate thread in your application that's solely responsible for side effects. ГЛАВНАЯ СТРАНИЦА redux-saga. . redux-saga — это библиотека, которая призвана упростить и улучшить побочные эффекты (т.е. такие действия, как асинхронные операции, например, загрузки данных, и "грязные" действия,такие
3.1 ПОЛУЧЕНИЕ БУДУЩИХ ДЕЙСТВИЙ The take is just like call and put we saw earlier. It creates another command object that tells the middleware to wait for a specific action. The resulting behavior of the call Effect is the same as when the middleware suspends the Generator until a Promise resolves. In the take case, it'll suspend the Generator until a matching action is dispatched. In the above example, watchAndLog is 2.2 ДЕКЛАРАТИВНЫЕ ЭФФЕКТЫ If you finish a test without answering those two questions, you don’t have a real unit test. You have a sloppy, half-baked test. What we actually need to do is make sure the fetchProducts task yields a call with the right function and the right arguments.. Instead of invoking the asynchronous function directly from inside the Generator, we can yield only a description of the function 7. ГЛОССАРИЙ A Blocking call means that the Saga yielded an Effect and will wait for the outcome of its execution before resuming to the next instruction inside the yielding Generator. 3.13 ШАБЛОНЫ КОРНЕВОЙ САГИ 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с 3.7 ОТМЕНА ЗАДАЧ In the above example, cancellation of bgSyncTask will cause the Generator to jump to the finally block. Here you can use yield cancelled() to check if the Generator has been cancelled or not.. Cancelling a running task will also cancel the current Effect where the task is blocked at the moment of cancellation.3.10 ПРИМЕРЫ
This is a feature currently in the v1.0.0-beta release. This would provide a native way to perform integration like testing without one of the above libraries. The idea is that yoBEGINNER TUTORIAL
The initial setup#. Before we start, clone the tutorial repository. The final code of this tutorial is located in the sagas branch. Then in the command line, run: $ cd redux-saga-beginner-tutorial. $ npm install. Copy. To start the application, run: $ npm start. CHANNELS | REDUX-SAGA The first argument in eventChannel is a subscriber function. The role of the subscriber is to initialize the external event source (above using setInterval), then routes all incoming events from the source to the channel by invoking the supplied emitter.In the above example we're invoking emitter on each second.. Note: You need to sanitize your event sources as to not pass null or undefinedDECLARATIVE EFFECTS
Put another way, the Generator will yield plain Objects containing instructions, and the redux-saga middleware will take care of executing those instructions and giving back the result of their execution to the Generator. This way, when testing the Generator, all we need to do is to check that it yields the expected instruction by doing a simple deepEqual on the yielded Object.TASK CANCELLATION
In the above example, cancellation of bgSyncTask will use Generator.prototype.return to make the Generator jump directly to the finally block. Here you can use yield cancelled() to check if the Generator has been cancelled or not.. Cancelling a running task will also cancel the current Effect where the task is blocked at the momentof cancellation.
RACING EFFECTS
The race Effect offers a way of triggering a race between multiple Effects. The following sample shows a task that triggers a remote fetch request, and constrains the response within a 1 second timeout. import { race, call, put, delay } from 'redux-saga/effects'. function* fetchPostsWithTimeout() {. const {posts, timeout} = yield race({. 2.1. ИСПОЛЬЗОВАНИЕ ХЕЛПЕРОВ SAGA Unlike takeEvery, takeLatest allows only one fetchData task to run at any moment. And it will be the latest started task. If a previous task is still running when another fetchData task is started, the previous task will be automatically cancelled.. If you have multiple Sagas watching for different actions, you can create multiple watchers with those built-in helpers, which will behave like 1.1 РУКОВОДСТВО ДЛЯ НАЧИНАЮЩИХ Цели этого урока. Это руководство попытается представить redux-saga в (надеюсь) доступной форме. Для нашего начального урока мы будем использовать обычный демо-счётчик из 2.3 ОТПРАВКА ДЕЙСТВИЙ Note how we pass the fake response to the Generator via its next method. Outside the middleware environment, we have total control over the Generator, we can simulate a real environment by mocking results and resuming the Generator with them. 3.2 НЕБЛОКИРУЮЩИЕ ВЫЗВЫ So far we have all needed Effects in order to implement the above flow. We can wait for specific actions in the store using the take Effect. We can make asynchronous calls using the call Effect. Finally, we can dispatch actions to the store using the put Effect.. So let'sgive it a try:
3.6 КОМПОЗИЦИЯ SAGAS 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с REDUX-SAGA - AN INTUITIVE REDUX SIDE EFFECT MANAGERREAD ME4. RECIPES5. EXTERNAL RESOURCES6. TROUBLESHOOTING7. GLOSSARY8. API REFERENCE Redux-Saga. An intuitive Redux side effect manager. Easy to manage, easy to test, and executes efficiently.BEGINNER TUTORIAL
What happens is that the middleware examines the type of each yielded Effect then decides how to fulfill that Effect. If the Effect type is a PUT then it will dispatch an action to the Store. If the Effect is a CALL then it'll call the given function.. This separation between Effect creation and Effect execution makes it possible to test our Generator in a surprisingly easy way: READ ME · REDUX-SAGA redux-saga. redux-saga is a library that aims to make application side effects (i.e. asynchronous things like data fetching and impure things like accessing the browser cache) easier to manage, more efficient to execute, easy to test, and better at handling failures.. The mental model is that a saga is like a separate thread in your application that's solely responsible for side effects. 3.1 ПОЛУЧЕНИЕ БУДУЩИХ ДЕЙСТВИЙ The take is just like call and put we saw earlier. It creates another command object that tells the middleware to wait for a specific action. The resulting behavior of the call Effect is the same as when the middleware suspends the Generator until a Promise resolves. In the take case, it'll suspend the Generator until a matching action is dispatched. In the above example, watchAndLog is ГЛАВНАЯ СТРАНИЦА Предположим, что у нас есть интерфейс для извлечения некоторых пользовательских данных с 2.2 ДЕКЛАРАТИВНЫЕ ЭФФЕКТЫ If you finish a test without answering those two questions, you don’t have a real unit test. You have a sloppy, half-baked test. What we actually need to do is make sure the fetchProducts task yields a call with the right function and the right arguments.. Instead of invoking the asynchronous function directly from inside the Generator, we can yield only a description of the function 7. ГЛОССАРИЙ A Blocking call means that the Saga yielded an Effect and will wait for the outcome of its execution before resuming to the next instruction inside the yielding Generator. 3.13 ШАБЛОНЫ КОРНЕВОЙ САГИ 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с 3.7 ОТМЕНА ЗАДАЧ In the above example, cancellation of bgSyncTask will cause the Generator to jump to the finally block. Here you can use yield cancelled() to check if the Generator has been cancelled or not.. Cancelling a running task will also cancel the current Effect where the task is blocked at the moment of cancellation.3.10 ПРИМЕРЫ
This is a feature currently in the v1.0.0-beta release. This would provide a native way to perform integration like testing without one of the above libraries. The idea is that yo REDUX-SAGA - AN INTUITIVE REDUX SIDE EFFECT MANAGERREAD ME4. RECIPES5. EXTERNAL RESOURCES6. TROUBLESHOOTING7. GLOSSARY8. API REFERENCE Redux-Saga. An intuitive Redux side effect manager. Easy to manage, easy to test, and executes efficiently.BEGINNER TUTORIAL
What happens is that the middleware examines the type of each yielded Effect then decides how to fulfill that Effect. If the Effect type is a PUT then it will dispatch an action to the Store. If the Effect is a CALL then it'll call the given function.. This separation between Effect creation and Effect execution makes it possible to test our Generator in a surprisingly easy way: READ ME · REDUX-SAGA redux-saga. redux-saga is a library that aims to make application side effects (i.e. asynchronous things like data fetching and impure things like accessing the browser cache) easier to manage, more efficient to execute, easy to test, and better at handling failures.. The mental model is that a saga is like a separate thread in your application that's solely responsible for side effects. 3.1 ПОЛУЧЕНИЕ БУДУЩИХ ДЕЙСТВИЙ The take is just like call and put we saw earlier. It creates another command object that tells the middleware to wait for a specific action. The resulting behavior of the call Effect is the same as when the middleware suspends the Generator until a Promise resolves. In the take case, it'll suspend the Generator until a matching action is dispatched. In the above example, watchAndLog is ГЛАВНАЯ СТРАНИЦА Предположим, что у нас есть интерфейс для извлечения некоторых пользовательских данных с 2.2 ДЕКЛАРАТИВНЫЕ ЭФФЕКТЫ If you finish a test without answering those two questions, you don’t have a real unit test. You have a sloppy, half-baked test. What we actually need to do is make sure the fetchProducts task yields a call with the right function and the right arguments.. Instead of invoking the asynchronous function directly from inside the Generator, we can yield only a description of the function 7. ГЛОССАРИЙ A Blocking call means that the Saga yielded an Effect and will wait for the outcome of its execution before resuming to the next instruction inside the yielding Generator. 3.13 ШАБЛОНЫ КОРНЕВОЙ САГИ 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с 3.7 ОТМЕНА ЗАДАЧ In the above example, cancellation of bgSyncTask will cause the Generator to jump to the finally block. Here you can use yield cancelled() to check if the Generator has been cancelled or not.. Cancelling a running task will also cancel the current Effect where the task is blocked at the moment of cancellation.3.10 ПРИМЕРЫ
This is a feature currently in the v1.0.0-beta release. This would provide a native way to perform integration like testing without one of the above libraries. The idea is that yoBEGINNER TUTORIAL
What happens is that the middleware examines the type of each yielded Effect then decides how to fulfill that Effect. If the Effect type is a PUT then it will dispatch an action to the Store. If the Effect is a CALL then it'll call the given function.. This separation between Effect creation and Effect execution makes it possible to test our Generator in a surprisingly easy way: CHANNELS | REDUX-SAGA The first argument in eventChannel is a subscriber function. The role of the subscriber is to initialize the external event source (above using setInterval), then routes all incoming events from the source to the channel by invoking the supplied emitter.In the above example we're invoking emitter on each second.. Note: You need to sanitize your event sources as to not pass null or undefinedDECLARATIVE EFFECTS
Put another way, the Generator will yield plain Objects containing instructions, and the redux-saga middleware will take care of executing those instructions and giving back the result of their execution to the Generator. This way, when testing the Generator, all we need to do is to check that it yields the expected instruction by doing a simple deepEqual on the yielded Object.TASK CANCELLATION
In the above example, cancellation of bgSyncTask will use Generator.prototype.return to make the Generator jump directly to the finally block. Here you can use yield cancelled() to check if the Generator has been cancelled or not.. Cancelling a running task will also cancel the current Effect where the task is blocked at the momentof cancellation.
RACING EFFECTS
Starting a race between multiple Effects#. Sometimes we start multiple tasks in parallel but we don't want to wait for all of them, we just need to get the winner: the first one that resolves (or rejects).The race Effect offers a way of triggering a race between multiple Effects.. The following sample shows a task that triggers a remote fetch request, and constrains the response within a 1 2.1. ИСПОЛЬЗОВАНИЕ ХЕЛПЕРОВ SAGA Unlike takeEvery, takeLatest allows only one fetchData task to run at any moment. And it will be the latest started task. If a previous task is still running when another fetchData task is started, the previous task will be automatically cancelled.. If you have multiple Sagas watching for different actions, you can create multiple watchers with those built-in helpers, which will behave like 1.1 РУКОВОДСТВО ДЛЯ НАЧИНАЮЩИХ Это руководство попытается представить redux-saga в (надеюсь) доступной форме. Для нашего начального урока мы будем использовать обычный демо-счётчик из Redux репозитория. 3.2 НЕБЛОКИРУЮЩИЕ ВЫЗВЫ So far we have all needed Effects in order to implement the above flow. We can wait for specific actions in the store using the take Effect. We can make asynchronous calls using the call Effect. Finally, we can dispatch actions to the store using the put Effect.. So let'sgive it a try:
2.3 ОТПРАВКА ДЕЙСТВИЙ Note how we pass the fake response to the Generator via its next method. Outside the middleware environment, we have total control over the Generator, we can simulate a real environment by mocking results and resuming the Generator with them. 3.6 КОМПОЗИЦИЯ SAGAS 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с REDUX-SAGA - AN INTUITIVE REDUX SIDE EFFECT MANAGERREAD ME4. RECIPES5. EXTERNAL RESOURCES6. TROUBLESHOOTING7. GLOSSARY8. API REFERENCE Redux-Saga. An intuitive Redux side effect manager. Easy to manage, easy to test, and executes efficiently.BEGINNER TUTORIAL
The initial setup#. Before we start, clone the tutorial repository. The final code of this tutorial is located in the sagas branch. Then in the command line, run: $ cd redux-saga-beginner-tutorial. $ npm install. Copy. To start the application, run: $ npm start. CHANNELS | REDUX-SAGA The first argument in eventChannel is a subscriber function. The role of the subscriber is to initialize the external event source (above using setInterval), then routes all incoming events from the source to the channel by invoking the supplied emitter.In the above example we're invoking emitter on each second.. Note: You need to sanitize your event sources as to not pass null or undefined READ ME · REDUX-SAGA redux-saga. redux-saga is a library that aims to make application side effects (i.e. asynchronous things like data fetching and impure things like accessing the browser cache) easier to manage, more efficient to execute, easy to test, and better at handling failures.. The mental model is that a saga is like a separate thread in your application that's solely responsible for side effects.TASK CANCELLATION
In the above example, cancellation of bgSyncTask will use Generator.prototype.return to make the Generator jump directly to the finally block. Here you can use yield cancelled() to check if the Generator has been cancelled or not.. Cancelling a running task will also cancel the current Effect where the task is blocked at the momentof cancellation.
ГЛАВНАЯ СТРАНИЦА redux-saga. . redux-saga — это библиотека, которая призвана упростить и улучшить побочные эффекты (т.е. такие действия, как асинхронные операции, например, загрузки данных, и "грязные" действия,такие
2.2 ДЕКЛАРАТИВНЫЕ ЭФФЕКТЫ If you finish a test without answering those two questions, you don’t have a real unit test. You have a sloppy, half-baked test. What we actually need to do is make sure the fetchProducts task yields a call with the right function and the right arguments.. Instead of invoking the asynchronous function directly from inside the Generator, we can yield only a description of the function4. РЕЦЕПТЫ
3.6 КОМПОЗИЦИЯ SAGAS 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с 3.13 ШАБЛОНЫ КОРНЕВОЙ САГИ 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с REDUX-SAGA - AN INTUITIVE REDUX SIDE EFFECT MANAGERREAD ME4. RECIPES5. EXTERNAL RESOURCES6. TROUBLESHOOTING7. GLOSSARY8. API REFERENCE Redux-Saga. An intuitive Redux side effect manager. Easy to manage, easy to test, and executes efficiently.BEGINNER TUTORIAL
The initial setup#. Before we start, clone the tutorial repository. The final code of this tutorial is located in the sagas branch. Then in the command line, run: $ cd redux-saga-beginner-tutorial. $ npm install. Copy. To start the application, run: $ npm start. CHANNELS | REDUX-SAGA The first argument in eventChannel is a subscriber function. The role of the subscriber is to initialize the external event source (above using setInterval), then routes all incoming events from the source to the channel by invoking the supplied emitter.In the above example we're invoking emitter on each second.. Note: You need to sanitize your event sources as to not pass null or undefined READ ME · REDUX-SAGA redux-saga. redux-saga is a library that aims to make application side effects (i.e. asynchronous things like data fetching and impure things like accessing the browser cache) easier to manage, more efficient to execute, easy to test, and better at handling failures.. The mental model is that a saga is like a separate thread in your application that's solely responsible for side effects.TASK CANCELLATION
In the above example, cancellation of bgSyncTask will use Generator.prototype.return to make the Generator jump directly to the finally block. Here you can use yield cancelled() to check if the Generator has been cancelled or not.. Cancelling a running task will also cancel the current Effect where the task is blocked at the momentof cancellation.
ГЛАВНАЯ СТРАНИЦА redux-saga. . redux-saga — это библиотека, которая призвана упростить и улучшить побочные эффекты (т.е. такие действия, как асинхронные операции, например, загрузки данных, и "грязные" действия,такие
2.2 ДЕКЛАРАТИВНЫЕ ЭФФЕКТЫ If you finish a test without answering those two questions, you don’t have a real unit test. You have a sloppy, half-baked test. What we actually need to do is make sure the fetchProducts task yields a call with the right function and the right arguments.. Instead of invoking the asynchronous function directly from inside the Generator, we can yield only a description of the function4. РЕЦЕПТЫ
3.6 КОМПОЗИЦИЯ SAGAS 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas с 3.13 ШАБЛОНЫ КОРНЕВОЙ САГИ 3.4 Выполнение гонки между несколькими эффектами. 3.5 Последовательность Sagas сBEGINNER TUTORIAL
The initial setup#. Before we start, clone the tutorial repository. The final code of this tutorial is located in the sagas branch. Then in the command line, run: $ cd redux-saga-beginner-tutorial. $ npm install. Copy. To start the application, run: $ npm start.DECLARATIVE EFFECTS
Put another way, the Generator will yield plain Objects containing instructions, and the redux-saga middleware will take care of executing those instructions and giving back the result of their execution to the Generator. This way, when testing the Generator, all we need to do is to check that it yields the expected instruction by doing a simple deepEqual on the yielded Object. 3.8 МОДЕЛЬ ФОРВКА REDUX-SAGA So the whole task will block until a delay of 1000 millisecond passed and both task1 and task2 finished their business.. Say for example, the delay of 1000 milliseconds elapsed and the 2 tasks haven't yet finished, then fetchAll will still wait for all forked tasks to finish before terminating the whole task.. The attentive reader might have noticed the fetchAll saga could be rewritten using 2.1. ИСПОЛЬЗОВАНИЕ ХЕЛПЕРОВ SAGA Unlike takeEvery, takeLatest allows only one fetchData task to run at any moment. And it will be the latest started task. If a previous task is still running when another fetchData task is started, the previous task will be automatically cancelled.. If you have multiple Sagas watching for different actions, you can create multiple watchers with those built-in helpers, which will behave like 3.1 ПОЛУЧЕНИЕ БУДУЩИХ ДЕЙСТВИЙ The take is just like call and put we saw earlier. It creates another command object that tells the middleware to wait for a specific action. The resulting behavior of the call Effect is the same as when the middleware suspends the Generator until a Promise resolves. In the take case, it'll suspend the Generator until a matching action is dispatched. In the above example, watchAndLog is 1.1 РУКОВОДСТВО ДЛЯ НАЧИНАЮЩИХ Цели этого урока. Это руководство попытается представить redux-saga в (надеюсь) доступной форме. Для нашего начального урока мы будем использовать обычный демо-счётчик из 5. ВНЕШНИЕ РЕСУРСЫ Redux Hero Part 4: Every Hero Needs a Villain (A Fun Introduction to redux-saga.js) Modelling common patterns with redux-saga by ChanakyaBhardwaj
3.10 ПРИМЕРЫ
This is a feature currently in the v1.0.0-beta release. This would provide a native way to perform integration like testing without one of the above libraries. The idea is that yo 2.3 ОТПРАВКА ДЕЙСТВИЙ Note how we pass the fake response to the Generator via its next method. Outside the middleware environment, we have total control over the Generator, we can simulate a real environment by mocking results and resuming the Generator with them. 6. ИСПРАВЛЕНИЕ ПРОБЛЕМ It will put the application into an infinite loop because take() only creates a description of the effect. Unless you yield it for the middleware to execute, the while loop will behave like a regular while loop, and freeze your application.. Adding yield will pause the generator and return control to the Redux Saga middleware which willexecute the effect.
* Read Me
* 1. Introduction
* 1.1 Beginner Tutorial * 1.2 Saga Background* 2. Basic Concepts
* 2.1 Using Saga Helpers * 2.2 Declarative Effects * 2.3 Dispatching actions * 2.4 Error handling * 2.5 A common abstraction: Effect * 3. Advanced Concepts * 3.1 Pulling future actions * 3.2 Non blocking calls * 3.3 Running tasks in parallel * 3.4 Starting a race between multiple Effects * 3.5 Sequencing Sagas using yield* * 3.6 Composing Sagas * 3.7 Task cancellation * 3.8 redux-saga's fork model * 3.9 Common Concurrency Patterns * 3.10 Examples of Testing Sagas * 3.11 Connecting Sagas to external Input/Output * 3.12 Using Channels * 3.13 Root Saga Patterns* 4. Recipes
* 5. External Resources * 6. Troubleshooting* 7. Glossary
* 8. API Reference
*
* Published with GitBook____
__
FacebookGoogle+TwitterWeiboInstapaper______
AA
SerifSans
WhiteSepiaNight
__ READ ME
REDUX-SAGA
redux-saga is a library that aims to make application side effects (i.e. asynchronous things like data fetching and impure things like accessing the browser cache) easier to manage, more efficient to execute, easy to test, and better at handling failures. The mental model is that a saga is like a separate thread in your application that's solely responsible for side effects. redux-saga is a redux middleware, which means this thread can be started, paused and cancelled from the main application with normal redux actions, it has access to the full redux application state and it can dispatch reduxactions as well.
It uses an ES6 feature called Generators to make those asynchronous flows easy to read, write and test. _(if you're not familiar with them here are some introductory links)_ By doing so,
these asynchronous flows look like your standard synchronous JavaScript code. (kind of like async/await, but generators have a few more awesome features we need) You might've used redux-thunk before to handle your data fetching. Contrary to redux thunk, you don't end up in callback hell, you can test your asynchronous flows easily and your actions stay pure.GETTING STARTED
INSTALL
$ npm install --save redux-sagaor
$ yarn add redux-saga Alternatively, you may use the provided UMD builds directly in theCopyright © 2024 ArchiveBay.com. All rights reserved. Terms of Use | Privacy Policy | DMCA | 2021 | Feedback | Advertising | RSS 2.0