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?
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.
import { call } from 'redux-saga/effects'
const params = ['abc', 'def', 'ghi']
const responses = yield params.map(p => call(fetch, p))