У меня есть вызовы API следующим образом:
- Вызов основного 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)
}))
Это не работает, поскольку map ничего не знает о функциях генератора. Итак, я попробовал это:
const response = yield call(get, 'endpoint')
const configHome = yield all(response.map((ele) => {
return call(get, paramsBuilder(undefined, ele.CategoryID))
}))
Но это заблокирует отображение доступных данных в моем пользовательском интерфейсе до тех пор, пока не будут завершены все вызовы вспомогательного API.
Я также попытался создать отдельную функцию генератора, которую я вызываю изнутри карты и вызываю ее функцию .next (), но проблема здесь снова в том, что saga не управляет этой функцией генератора, поэтому эффект вызова не возвращает никакого значения должным образом.
Полностью застрял на этой части. Был бы признателен за любую помощь.