Verknüpfen von asynchronen Operationen aus einem Array von Objekten mit ReactiveCocoa

8

Ich habe ein Array von Entitäten und möchte asynchrone Operationen für die Entitäten ausführen. Die Operationen sollten verkettet und in der gleichen Reihenfolge mit den Entitäten im Array ausgeführt werden. Ich bin neu in RAC. Wie macht man das in RAC?

    
Arnol 20.09.2013, 01:46
quelle

1 Antwort

12

Zuerst benötigen Sie eine Wrapper-Methode, die Ihre asynchrone Operation ausführt, die ein Signal zurückgibt. Nehmen wir an, die asynchrone Operationsoperation benötigt einen Completion-Block. Von den Geräuschen ist es egal, die Werte, Sie wollen die Nebenwirkungen, in diesem Fall sendet das Signal keine Werte, es wird nur abgeschlossen.

%Vor%

BEARBEITEN: Dank des Kommentars von Justin Spahr-Summers ist es ein viel einfacherer Ansatz, die Operationen zu verketten:

%Vor%

Der Operator +concat: von ReactiveCocoa nimmt eine Sammlung von Signalen auf und abonniert die Signale nacheinander, wobei er auf die Beendigung eines Signals wartet, bevor er seinen Nachfolger abonniert. Die Verwendung von -rac_sequence dient dazu, die Entitäten den Operationssignalen zuzuordnen.

In diesem Kontext erreicht die Verwendung von +concat: den gleichen Effekt wie die -then: , die aus meiner ersten Antwort folgt.

Beim RAC-Wrapper besteht die Lösung darin, mit einem leeren Signal zu beginnen und eine Kette aufzubauen, indem Sie über die Entitäten iterieren und die Operationen mit -then: . Die Operation -then: wartet im Wesentlichen darauf, dass die vorherige Operation abgeschlossen wird, bevor die nächste gestartet wird.

%Vor%

An diesem Punkt hast du:

%Vor%

ReactiveCocoa hat hilfreiche Dokumentation und sehr gut dokumentierte Header, die beide für mich sehr wertvoll waren Ich war neu.

    
Dave Lee 20.09.2013, 03:02
quelle

Tags und Links