Skip to content

Instantly share code, notes, and snippets.

@jonsterling
Last active December 26, 2015 23:09
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jonsterling/7228372 to your computer and use it in GitHub Desktop.
Save jonsterling/7228372 to your computer and use it in GitHub Desktop.
RACCommand *example = [[RACCommand alloc] initWithSignalBlock:^(id input) {
return [RACSignal createWithBlock:^(id<RACSubscriber> subscriber){
[subscriber sendCompleted];
return nil;
}];
];
// Now, how will I know when each task has completed?
// I certainly cannot tell from `example.executionSignals.flatten`.
RACSignal *completions = [example.executionSignals flattenMap:^(RACSignal *transaction) {
return [transaction then:^{
[RACSignal return:RACUnit.defaultUnit]
}];
}];
RACCommand *resetCommand = [[RACCommand alloc] initWithSignalBlock:^(id input) {
return [RACSignal return:[RACUnit defaultUnit]];
}];
RACSignal *incrementing = [completions mapReplace:^(NSNumber *count) {
return @(count.integerValue + 1);
}];
RACSignal *resetting = [resetCommand.executionSignals.flatten mapReplace:^(NSNumber *count) {
return @0;
}];
RACSignal *transformers = [RACSignal merge:@[ incrementing, resetting ]];
RACSignal *runningCount = [transformers scanWithStart:@0 reduce:^(NSNumber *count, NSNumber *(^transformer)(NSNumber *)) {
return transformer(count);
}];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment