2017-07-28 5 views
0

Ich versuche, eine Reihe von Saga-Effekte der Reihe nach zu ergeben. Die Idee ist, dass yield all([call(foo), call(bar])call(foo) und call(bar) parallel laufen (oder zumindest in einer pseudo-parallelen Art und Weise).Führen Sie eine Reihe von Sagas-Effekt der Reihe nach

Allerdings möchte ich meine sagas sequenziell laufen, was bedeutet, dass ich auf foo warten möchte vor dem lauching bar (auf diese Weise kann ich den Prozess abbrechen).

Dieses Array von Aufruf wird dynamisch generiert, so dass ich eine Reihe von yield schreiben kann. Was ist die korrekte Syntax in diesem Fall?

Antwort

0

Die Redux-Saga documentation hat ein Beispiel für die Sequenzierung sagas.

Wenn Sie eine Reihe von Anrufen haben, geben Sie diese einfach in Ihrer Saga ein. Zum Beispiel:

// Some array containing call objects 
let calls = [...]; 

// Call each in order they are present in the array 
for (let c of calls) { 
    yield c 
} 
+0

Hallo, ich endete tatsächlich mit etwas ähnliches mit einer for-Schleife. Ich erwartete jedoch eine kleinere Syntax mit 'forEach' oder' map'. Ich werde dies in einen selbstgemachten Effekt kapseln, um eine schönere Syntax zu erhalten, wie 'sequence ([someArray])'. –

+0

Es ist wahrscheinlich am besten, einen eigenen Sequenz-Effekt zu haben, wenn man etwas Schönes lesen möchte, wie 'yield sequence (calls)'. Es gibt keinen großen Unterschied in Bezug auf Code mit einer for-Schleife im Vergleich zu forEach. Sie können jedoch außer in der Generatorfunktion nicht "liefern", weshalb Sie 'forEach' nicht verwenden können. –

Verwandte Themen