在反应管道中删除嵌套的 subscribeNext

Removing nested subscribeNext in reactive pipeline

我正在尝试构建一个反应管道,其中一些输入信号的变化将触发异步网络 api 请求。但是我不需要在 web api.

的 subscribeNext 块中执行任何操作

这是它的样子:

RACSignal *inputChanged = [[RACSignal merge:@[ RACObserve(self, input1), RACObserve(self, input2) ]] throttle:0.5];

@weakify(self)
[[[inputChanged
  subscribeNext:^(id x) {
      @strongify(self)
      [[self asyncWebAPI]
       subscribeNext:^(id x) {
       }];
  }];

这行得通。但它并不优雅,因为嵌套的 subscribeNext: 而第二个 subscribeNext 只是为了让 asyncWebAPI 成为一个热信号。

有没有更好的方法来构建这个管道?

查看 -flattenMap:。例如:

[[inputChanged
    flattenMap:^(id _) {
        @strongify(self);
        return [self asyncWebAPI];
    }]
    subscribeNext:^(id x) {
        // Do stuff
    }];