反应式 Cocoa `then` 运算符
Reactive Cocoa `then` operator
我找不到很多关于 RAC then
运算符的文档。它服务的目的是什么。我应该什么时候使用。它?有人可以在下面的上下文中解释一下吗?
[[[[self requestAccessToTwitterSignal]
then:^RACSignal *{
@strongify(self)
return self.searchText.rac_textSignal;
}]
filter:^BOOL(NSString *text) {
@strongify(self)
return [self isValidSearchText:text];
}]
subscribeNext:^(id x) {
NSLog(@"%@", x);
} error:^(NSError *error) {
NSLog(@"An error occurred: %@", error);
}];
它本质上只是让你应用它的信号作为延迟工作,它不会发送 next
事件直到原始信号完成,此时它会切换到你提供的信号then:
.
requestAccessToTwitterSignal
会做一些有状态的事情并设置某种 twitter 令牌,所以我们使用 then:
等到它完成,然后 return 我们想要获得的新信号next
个事件来自。
代码文档提供了合理的解释。
/// Ignores all `next`s from the receiver, waits for the receiver to complete,
/// then subscribes to a new signal.
///
/// block - A block which will create or obtain a new signal to subscribe to,
/// executed only after the receiver completes. This block must not be
/// nil, and it must not return a nil signal.
///
/// Returns a signal which will pass through the events of the signal created in
/// `block`. If the receiver errors out, the returned signal will error as well.
所以在你的上下文中。它一直等到 requestAccessToTwitterSignal 完成。忽略之后的任何事件。 then
订阅了新信号。即 self.searchText.rac_textSignal
。 filter
适用于新信号。
我找不到很多关于 RAC then
运算符的文档。它服务的目的是什么。我应该什么时候使用。它?有人可以在下面的上下文中解释一下吗?
[[[[self requestAccessToTwitterSignal]
then:^RACSignal *{
@strongify(self)
return self.searchText.rac_textSignal;
}]
filter:^BOOL(NSString *text) {
@strongify(self)
return [self isValidSearchText:text];
}]
subscribeNext:^(id x) {
NSLog(@"%@", x);
} error:^(NSError *error) {
NSLog(@"An error occurred: %@", error);
}];
它本质上只是让你应用它的信号作为延迟工作,它不会发送 next
事件直到原始信号完成,此时它会切换到你提供的信号then:
.
requestAccessToTwitterSignal
会做一些有状态的事情并设置某种 twitter 令牌,所以我们使用 then:
等到它完成,然后 return 我们想要获得的新信号next
个事件来自。
代码文档提供了合理的解释。
/// Ignores all `next`s from the receiver, waits for the receiver to complete,
/// then subscribes to a new signal.
///
/// block - A block which will create or obtain a new signal to subscribe to,
/// executed only after the receiver completes. This block must not be
/// nil, and it must not return a nil signal.
///
/// Returns a signal which will pass through the events of the signal created in
/// `block`. If the receiver errors out, the returned signal will error as well.
所以在你的上下文中。它一直等到 requestAccessToTwitterSignal 完成。忽略之后的任何事件。 then
订阅了新信号。即 self.searchText.rac_textSignal
。 filter
适用于新信号。