Рассмотрим следующий фрагмент:
- (RACSignal *)startRouting {
...
}
- (RACSignal *)updateRoutingWithSession:(NSString *)session {
...
}
- (RACSignal *)fetchFlights {
return [[self startRouting] flattenMap:^RACStream *(NSString *session) {
return [[[[self updateRoutingWithSession:session]
delay:2.0f]
repeat]
takeUntilBlock:^BOOL(RACTuple *operationAndResponse) {
AFHTTPRequestOperation *operation = [operationAndResponse first];
NSDictionary *response = [operationAndResponse second];
return [operation isCancelled] || 100 == [response[kPercentComplete] intValue];
}];
}];
}
Здесь происходит то, что startRouting
возвращает RACSignal
, который отправляет идентификатор сеанса. updateRoutingWithSession:
возвращает RACSignal
, который отправляет поиск NSDictionary
, включая атрибут PercentComplete
. Между опросами двухсекундная задержка.
fetchFlights
будет работать до тех пор, пока updateRoutingWithSession:
не наберет PercentComplete
100.
Моя проблема в том, что самый последний sendNext:
, где takeUntilBlock
возвращает true
, не достигает RACSubscriber
.
Что мне не хватает?