将一组 RACSignal 拆分为多个批次

Split an array of RACSignal into batches

如何从平面信号阵列创建一批信号?

我在 RAC 中找不到执行此操作的任何内置方法。

- (RACSignal *)createZipBatchOf:(NSArray *)signals withBatchSize:(NSUInteger)batchSize
{
    NSMutableArray *batches = [NSMutableArray new];
    NSUInteger itemsRemaining = [signals count];
    NSUInteger i = 0;

    while(i < [signals count])
    {
        NSRange range = NSMakeRange(i, MIN(batchSize, itemsRemaining));
        NSArray *batch = [signals subarrayWithRange:range];
        [batches addObject:[RACSignal zip:batch]];
        itemsRemaining -= range.length;
        i += range.length;
    }

    return [RACSignal concat:batches];
}