在反应管道中删除嵌套的 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
}];
我正在尝试构建一个反应管道,其中一些输入信号的变化将触发异步网络 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
}];