Question

maybe I am misunderstanding concat? why doesn't this code output also "B" I just get an output "A" Shouldn't concat work like this:

RACSignal *signal = [RACSignal createSignal:^ RACDisposable * (id<RACSubscriber>  subscriber) {
    [subscriber sendNext:@"A"];
    return nil;
}];

signal = [signal concat:[RACSignal createSignal:^ RACDisposable * (id<RACSubscriber> subscriber) {
    [subscriber sendNext:@"B"];
    return nil;
}] ];


signal= [signal doNext:^(id x){
    NSLog(@"doNext  %@",x);
}];

signal= [signal flattenMap:^RACStream *(id value) {
    NSLog(@"flattenMap %@", value);
   return [RACSignal return:value];
}];

signal=[signal doNext:^(id x){
    NSLog(@"doNext after flattenMap %@",x);
}];


[signal subscribeNext:^(id x) {
    NSLog(@"subscribeNext  %@", x);
}];
Was it helpful?

Solution

Your first signal never completes. If you call [subscriber sendCompleted] after calling [subscriber sendNext:@"A"], then you'll find -concat: does what you expect.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top