Имам API извиквания по следния начин:
- Извикване на main api, което ми дава масив от обекти.
- За всеки обект в масива трябва да извикам друг API асинхронно.
- Веднага след като извикването на под API за обекта приключи, актуализирайте неговите данни в хранилището на redux, което е масив (ofc), и го покажете.
Така че сценарият е списък, показващ елементи, които растат по динамичен начин.
Тъй като използвам redux-saga, трябва да изпратя втората част от вътре в redux-action. Опитах следния начин:
const response = yield call(get, 'endpoint')
const configHome = response.map(function* (ele) {
const data = yield call(get, ele.SomeURI + '?someParameter=' + ele.someObject.id)
}))
Това не работи, тъй като картата не знае нищо за функциите на генератора. Така че опитах това:
const response = yield call(get, 'endpoint')
const configHome = yield all(response.map((ele) => {
return call(get, paramsBuilder(undefined, ele.CategoryID))
}))
Но това ще блокира моя потребителски интерфейс от показване на налични данни, докато не завършат всички извиквания на под API.
Също така се опитах да направя отделна генераторна функция, която извиквам от вътрешната карта и извиквам нейната .next() функция, но проблемът тук отново е, че saga не контролира тази генераторна функция, така че ефектът на повикване не връща никаква стойност правилно.
Напълно блокиран в тази част. Ще се радвам на всяка помощ.