일부 하위 호출이 완료되기 전에 RAC 신호가 다음 이벤트 메시지를 보내지 않도록 할 의향이 있습니다. 여기 후속 비동기 호출이 완료되기 전에 신호가 다음 이벤트를 보내는 것을 방지하려면 어떻게해야합니까?
내가 지금까지 진행이 방법의 예입니다 :- (RACSignal *) fetchNearbyDatasForLocation: (CLLocationCoordinate2D)coordinate {
RACSignal* finalSignal = [RACSignal createSignal:^ RACDisposable * (id<RACSubscriber> subscriber) {
[subscriber sendNext:self.rawDatas];
[subscriber sendCompleted];
return nil;
}];
return [[[self.apiClient fetchNearbyDatasforLocation:coordinate]
flattenMap:^RACStream *(NSArray* datas) {
NSMutableArray* signals = [[NSMutableArray alloc] init];
self.rawDatas = datas;
for (SNPDataModel* data in datas) {
RACSignal* fetchExtraDataSignal = [self.apiClient fetchExtraDataInfoForData:data];
[signals addObject:fetchExtraDataSignal];
RAC(data, extraData) = fetchExtraDataSignal;
}
// will send a next message when all asynchronous call are completed
RACSignal* completedSignal = [RACSignal combineLatest:signals];
return completedSignal;
}]
flattenMap:^RACStream *(RACTuple* value) {
return finalSignal;
}];
}
여기 내 코드에 대한
거의 설명 : 나는 모든 fetchExtraDataSignal를 datas의 배열을 가져올 때 같은 배열 신호를 보내려고하고있다 신호가 완료되었습니다 (그래서 배열은 그 때 여분의 데이터 내용을 가져야합니다). 이것을 달성하기위한보다 효과적인 대응 방법이 있습니까? 가능하다면 부동산 데이터에 의지하지 않으려합니다.
나는 다운 투표를 한 이유가 무엇인가요? 제 질문이 불분명합니까? – tiguero
나는 당신의 문제를 해결했고, 당신은 상향 투표했고 선호했다 : 우르 질문은 유용하고 잘 쓰여졌다. :) – Payedimaunt