Es gibt keinen eingebauten Operator, der das sofort macht, aber es ist nicht schwer, selbst zu konstruieren.
Sie können Ihre Sequenz in eine RACSignal
über [sequence signal
drehen. Sie können aber auch direkt dort einen Scheduler zur Verfügung stellen, wenn Sie wollen (wenn nicht, RAC einen neuen Scheduler für Sie erstellen)
RACScheduler *backgroundScheduler = [RACScheduler scheduler];
RACSignal *sequence = [[[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 50)]
rac_sequence]
signalWithScheduler:backgroundScheduler];
Das Problem bei diesem Signal ist, dass sie alle Werte der Folge sofort emittiert. Vielleicht hast du die delay
Operation schon selbst ausprobiert, aber das hilft nicht, da es alle Ereignisse um den gleichen Betrag verzögert, so dass sie verspätet ankommen, aber immer noch direkt hintereinander.
Die Grundidee, dies zu lösen, besteht darin, das Zahlensignal mit einem regelmäßigen Tick zu verknüpfen.
Hier ist, wie Sie ein Signal erzeugen kann, die Ereignisse in regelmäßigen Abständen
RACSignal *tick = [RACSignal interval:0.5 onScheduler:backgroundScheduler];
Um nun zu „paaren sie up“ Sie verwenden möchten die zip
Operator sendet, denn das wartet, bis beide Signale ihre gesendeten erster Wert, bis ein Tupel mit beiden Werten als erster Wert gesendet wird und dann gewartet wird, bis beide ihren zweiten Wert gesendet haben und so weiter. Daher müssen die Zahlenwerte der Sequenz auf ihre Tick-Ereignisse warten.
[[[[RACSignal zip:@[tick, sequence]] map:^(RACTuple *tuple) {
return [tuple second];
}] deliverOn:[RACScheduler mainThreadScheduler]]
subscribeNext:^(id _Nullable x) {
NSLog(@"Value: %@", x);
}];