2016-03-11 2 views
0

Например, Моя текущая реализация, как показано ниже:Как вернуть RACSignal без использования [RACSignal createSignal]

- (RACSignal *)getPlaylist { 
    return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { 
    [[[buttonClickSignal 
     flattenMap:^(UIButton *sender) { 
      return [self logInWithUsername:username password:password]; 
     }] 
     flattenMap:^(NSDictionary *json) { 
      return [self fetchPlaylistForToken:token]; 
     }] 
     subscribeNext:^(NSDictionary *json) { 
     [subscriber sendNext:json]; 
     [subscriber sendCompleted]; 
     }]; 
     return nil; 
    }]; 
} 

Как вернуть новый сигнал без использования метода [RACSignal createSignal]?

ответ

3

Почему бы вам просто не вернуть отображаемый buttonClickSignal? я не вижу никаких проблем с этим просто:

- (RACSignal *)getPlaylist { 
    return [[buttonClickSignal 
       flattenMap:^(UIButton *sender) { 
        return [self logInWithUsername:username password:password]; 
       }] 
       flattenMap:^(NSDictionary *json) { 
        return [self fetchPlaylistForToken:token]; 
       }]; 
} 

Так как вы, кажется, игнорируя ошибки сейчас текущая реализация никогда не будет на самом деле полным, если какой-либо из сигналов ошибки flattenMapped.

Смежные вопросы