1. Если это независимые списки, то почему после ответа апи promoHeroes перезаписываются? Если идея в том, что инфу на главной всегда показывать из promo, то просто не трогать это поле при HEROES_API_LOADED.
2. Если же промо-список должен обновляться после запроса к апи, то тут можно реорганизовать стор.
В идеале - хранить нормализованный список героев. Примерная структура:
const store = {
heroes: {
byId: { 1: { id: 1, name: 'Luke', ... }, ... },
allIds: [1, 2, 3, ...],
},
promoIds: [1, 2],
}
Иногда нормализация кажется излишней, и кажется что работать с таким стором сложнее, но на деле это оказывается удобнее.
Теперь, если сервисы promo и api должны формировать один общий список, то на экшенах HEROES_API_LOADED и HEROES_PROMO_LOADED необходимо мержить эти два списка в одно нормализованное хранилище heroes.
Даже если не хочется делать нормализацию, но необходимо объединить два списка из разных сервисов, придется писать какую-то логику мержа.