弃用的RACSignal缓冲区的替代方法是什么?

时间:2015-07-08 14:51:15

标签: ios objective-c reactive-cocoa

我试图用反应性cocoa进行并发加载,我的实现使用了不推荐使用的缓冲方法。如何在不失去代码清晰度的情况下改变它?

输入:发送" next"的加载信号数组只有一次并完成/错误

期望的结果:仅遵循5个并发请求的限制,并且仅在加载5个请求的批次时才发送下一个不频繁更新UI。

我的实施:

RACSignal *concurrentLoadingSignal = [[loadingsSignalsArray rac_sequence].signal flatten:5];
RACSignal *finalSignal = [[concurrentLoadingSignal buffer:5] map:^id(id loadingResults) {
                NSMutableArray *allResults = [NSMutableArray new];
                for (NSArray *result in loadingResults) {
                    [allResults addObjectsFromArray:result];
                }
                return allResults;
            }];

1 个答案:

答案 0 :(得分:2)

正如github issue讨论过-buffer:方法的弃用一样,这种方法可能有用:

RACSignal* finalSignal = [[[[[concurrentLoadingSignal
                          take:5]
                          collect]
                          map:^id(NSArray* loadingResults) {
                              // do your thing
                          }]
                          repeat]
                          takeUntil:[concurrentLoadingSignal ignoreElements]];