考虑以下代码段:
- (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
发送会话 ID 的 a 。
updateRoutingWithSession:
返回 a RACSignal
,它发送包含属性的NSDictionary
外观。PercentComplete
民意调查之间有两秒钟的延迟。
fetchFlights
将运行直到updateRoutingWithSession:
有PercentComplete
100 个。
我的问题是最后一个sendNext:
,即takeUntilBlock
返回的地方true
,没有到达RACSubscriber
.
我错过了什么?