简体   繁体   中英

How to return a RACSignal without using [RACSignal createSignal]

For example, My current implementation is like below:

- (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;
  }];
}

How to return a new signal without using [RACSignal createSignal] method?

Why don't you just return the mapped buttonClickSignal ? I don't see any problems with just this:

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

Since you appear to be ignoring errors right now your current implementation will never actually complete if any of the flattenMapped signals error.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM