2017-07-15 4 views
0

Ich habe eine native App reagieren, wo ich einfach alle rohen Aktionen in der App ausgeliefert bleiben muss. Die Idee ist, dass ich eine einfache Art von Ereignisspeicher erhalte, zu dem ich zu einem späteren Zeitpunkt Berichte und Statistiken zusammenfassen kann. Eine Voraussetzung ist, dass jede Aktion persistent ist wie, und dass sie persistent sind in der Reihenfolge, in der sie versandt wurden.Reihenfolge der eingehenden Aktionen in actionchannel unterscheidet sich

ging ich mit dem einfach Fall der Verwendung des actionChannel Effekt mit:

import { actionChannel, call, take } from 'redux-saga/effects' 

export function* track() { 
    const catchAll = yield actionChannel('*'); 
    while (true) { 
    const action = yield take(catchAll); 
    yield call(persist, action); 
    } 
} 

Diese besteht alle Aktionen, aber nicht in der Reihenfolge, in denen sie geschickt. Mit den Redux DevTools sehe ich jedoch die richtige Reihenfolge.

Gibt es etwas offensichtlich, dass ich hier verpasst habe? Wie kann ich garantiert die richtige Bestellung bekommen? Funktioniert actionChannel() überhaupt so?

Antwort

0

Es scheint, dass es sehr einfach war: Die track Saga war die letzte, die registriert wurde. Nach dem Verschieben der sagaMiddleware.run(track); als erste funktionierten die Dinge wie erwartet.

Die Reihenfolge der Aktionen außer den ersten wäre jedoch in der richtigen Reihenfolge gewesen. Aber ich konzentrierte mich auf die ersten ~ 5 Aktionen nicht in der richtigen Reihenfolge.

Verwandte Themen