Redux Saga noob hier.Wie kann ich Redux-Saga erhalten, um darauf zu warten, dass zwei Aktionen mindestens einmal in beliebiger Reihenfolge passieren?
Ich muss einen Saga erstellen, der den Anfangszustand für den Redux-Speicher von meinem API-Server lädt.
Dies beinhaltet die Verwendung von zwei asynchronen Sagas: getCurrentUser
und getGroups
.
Ich brauche diese Ajax-Anforderungen parallel zu erteilen und für die GET_CURRENT_USER_SUCCESS
und GET_GROUPS_SUCCESS
Aktionen warten, bevor die pageReady
Aktion Ausstellung, die die UI sagt, es ist Zeit die Komponenten reagieren zu machen.
kam ich mit einer hacky Lösung:
function * loadInitialState() {
yield fork(getCurrentUser)
yield fork(getGroups)
while (true) {
yield take([
actions.GET_GROUPS_SUCCESS,
actions.GET_CURRENT_USER_SUCCESS
])
yield take([
actions.GET_GROUPS_SUCCESS,
actions.GET_CURRENT_USER_SUCCESS
])
yield put(actions.pageReady())
}
}
Das Problem mit diesem Code ist, dass aus irgendeinem Grund, wenn GET_GROUPS_SUCCESS
zweimal ausgegeben wird, wird die pageReady
Aktion zu früh aufgerufen werden.
Wie kann ich redux Saga für GET_GROUPS_SUCCESS
warten und GET_CURRENT_USER_SUCCESS
mindestens einmal in beliebiger Reihenfolge geschehen?