我试图用反应性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;
}];
答案 0 :(得分:2)
正如github issue讨论过-buffer:
方法的弃用一样,这种方法可能有用:
RACSignal* finalSignal = [[[[[concurrentLoadingSignal
take:5]
collect]
map:^id(NSArray* loadingResults) {
// do your thing
}]
repeat]
takeUntil:[concurrentLoadingSignal ignoreElements]];