RACCommand
'рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рд┐рдЧреНрдирд▓ рдкреВрд░реНрдг рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ? рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
RACCommand *command = [[RACCommand alloc] initWithSignalBlock:^ RACSignal * (id value) {
return [RACSignal createSignal:^ RACDisposable * (id<RACSubscriber> subscriber) {
[subscriber sendNext:value];
[subscriber sendCompleted];
return nil;
}];
}];
[command.executionSignals.switchToLatest subscribeNext:^(id value) {
NSLog(@"next: %@", value); // logs "next: foo"
} completed:^{
NSLog(@"completed"); // never executes
}];
[command execute:@"foo"];
executionSignals
рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдЧрд▓рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
-switchToLatest
рддрдм рддрдХ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рдЬрдм рддрдХ рд╕рд┐рдЧреНрдирд▓-рдХреЗ-рд╕рд┐рдЧреНрдирд▓ рдкреВрд░реЗ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреЗред рдПрдХ рдкреВрд░реНрдг рдШрдЯрдирд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрдВрддрд░рд┐рдХ рд╕рдВрдХреЗрддреЛрдВ рдкрд░ -materialize
рдпрд╛ -concat:
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдореИрдВрдиреЗ -switchToLatest
рдХреЗ рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рджреЗрдЦрд╛ред
рддреБрд░рдВрдд рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рддреБрдо рд▓реЛрдЧ рдХрдорд╛рд▓ рдХреЗ рд╣реЛред :рдЖрдБрдЦ рдорд╛рд░рдирд╛:
рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ
рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ,
рдореИрдВ рдПрдХ рдХрдорд╛рдВрдб рдХрд╛ рдЖрдВрддрд░рд┐рдХ рд╕рдВрдХреЗрдд рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдзрдиреНрдпрд╡рд╛рдж
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдирдореВрдирд╛ рдХреЛрдб рд╣реИ?
рдзрдиреНрдпрд╡рд╛рдж
[[command.executionSignals
map:^(RACSignal *execution) {
return [execution doCompleted:^{
// something
}];
}]
switchToLatest]
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА