我正在尝试构建一个响应式(Reactive)管道,其中某些输入信号的变化将触发异步 Web API 请求。但我不需要在 web api 的 subscribeNext block 中执行任何操作。
它是这样的:
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
}];
关于ios - 在 react 管道中删除嵌套的 subscribeNext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28322095/