With redux-saga, one can execute multiple effects in parallel:
import { call } from 'redux-saga/effects'
// correct, effects will get executed in parallel
const [users, repos] = yield [
call(fetch, '/users'),
call(fetch, '/repos')
]
How can i create those "call"-calls programmatically?
What i want to achieve is this:
Lets say i have an array with different parameters and i want to execute a request to a server per parameter, but in parallel with redux-saga:
const parameters = ['abc', 'def', 'ghi']
const allMyFetchCalls = parameters.map( (p) => makeCallRequestWithParameter(p) );
makeCallRequestWithParameter would create a function call (or in redux-saga-speech: an effect) call(fetch, param) like in yield call(fetch, param)
const resultArray = yield allMyFetchCalls;
Is this possible and if so, how?
This might work aswell https://github.com/redux-saga/redux-saga/tree/master/docs/api#alleffects
Please note that
call
effect doesn't call anything at the time. It just creates Plain JavaScript Object and returns. So what you want is not so difficult.So according to the redux saga docs as of 11/17/2019 its says in order to make it execute in parallel you need to use all()
or if you want to compute some stuff before making your call