好吧,这里有点困惑。
我的viewModel
有一个属性searchString
,我验证它只设置一次。 但是这会被触发两次,进行两次 api 调用。 别介意它不应该触发两次,但那里甚至有一个distinctUntilChanged
也不能阻止它。 如果我在map
放置一个断点,它肯定会以相同的值命中两次queryString
。
RACSignal *searchResultsSignal = [[[[[[[[RACObserve(self, searchString)
ignore:nil]
ignore:@""]
distinctUntilChanged]
deliverOn:[RACScheduler scheduler]]
map:^id (NSString *queryString) {
@strongify(self);
TCThirdPartyAPIType type = [TCAPIIndividual thirdPartyAPITypeForAPITypeString:self.activeAPI.APITypeString];
return [TCThirdPartyAPIHelper fetchResultsForAPIType:type withQueryString:queryString latitude:self.latitude longitude:self.longitude];
}]
switchToLatest]
map:^id(TCAPIResponse *response) {
return response.result.array;
}] catch:^RACSignal *(NSError *error) {
return [RACSignal return: @[]];
}];
忘了说,如果我直接订阅RACObserve(self, searchString)
并插入断点,那只会捕获一次。
拉屎。 没关系。 订阅了两次。
你的评论救了我的命 :D
我以前遇到过这个问题,我使用 uitextfiled,当我听文本时,信号触发两次,因为 uitextfiled isFirstResponder 改变了,当 isFirstResponder 没有被触发时,是 YES 被触发
最有用的评论
你的评论救了我的命 :D