0
目前我创建一个内部信号来呼叫[Watchtower reportToServerWithBeaconRegionArraySignal:]
,因为这样我只能通过next
s,并捕获完成和错误信号,我不想传播,因为我想保留从[self rangedBeaconsSignal]
进一步信号的订阅。我试过使用catch:
(并且从那里提供的块返回[RACSignal empty]
),但是它只捕获错误,而不是完成。但是我没有看到它:我尝试使用catch:
(并从那里提供的块返回[RACSignal empty]
),但只捕获错误,不完成。有没有更好的方法来捕获错误和完成?
(?附注:我能不能检查我使用[disposable dispose]
也是正确这里可能是多余的):
[[[self rangedBeaconsSignal] flattenMap:^RACStream * (CLBeaconRegion *region) {
return [RACSignal createSignal:^RACDisposable * (id <RACSubscriber> subscriber) {
RACDisposable *disposable= [RACDisposable new];
[[Watchtower reportToServerWithBeaconRegionArraySignal:@[region] fromBackground:NO]
subscribeNext:^(id x) {
[subscriber sendNext:x];
} error:^(NSError *error) {
[disposable dispose];
} completed:^{
[disposable dispose];
}];
return disposable;
}];
}] subscribeNext:^(id x) {
NSLog(@"Sent beacon to server");
} error:^(NSError *error) {
// ideally errors might reach here, but I don't want to unsubscribe, so I'm ignoring them for now.
} completed:^{
}];