Redux-saga: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 39: | Line 39: | ||
// Console Step 3 | // Console Step 3 | ||
// Got a value: 6 | // Got a value: 6 | ||
</syntaxhighlight> | |||
= Effects = | |||
== Take == | |||
Take waits for an event to occur in the generator | |||
<syntaxhighlight lang="javascript"> | |||
var delayGenerator = function* () { | |||
console.info("Start"); | |||
const state = yield effect.take("SET_STATE"); | |||
console.info("Got State", state); | |||
} | |||
</syntaxhighlight> | |||
So dispatch can make it conclude | |||
<syntaxhighlight lang="javascript"> | |||
dispatch({state:"SET_STATE"}); | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 05:48, 28 May 2020
About
- Manages side-effects
- Depends on ES6 and Yield
- Consumes and emits actions
- Works without redux
Generator functions
The functions does not execute. It waits until .next() is called and progresses through the function breaking after each yield
var delayGenerator = function* () {
let data1 = yield delay(1000,1);
console.info("Step 1");
let data2 = yield delay(1000,2);
console.info("Step 2");
let data3 = yield delay(1000,3);
console.info("Step 3");
}
var obj = delayGenerator()
obj.next()
// Console Step 1
obj.next()
// Console Step 2
obj.next()
// Console Step 3
Using co
co runs the generator and the then holds the result.
var wrapped = co.wrap(delayGenerator);
wrapped().then( v=>console.log("Got a value:", v));
// Console Step 1
// Console Step 2
// Console Step 3
// Got a value: 6
Effects
Take
Take waits for an event to occur in the generator
var delayGenerator = function* () {
console.info("Start");
const state = yield effect.take("SET_STATE");
console.info("Got State", state);
}
So dispatch can make it conclude
dispatch({state:"SET_STATE"});