反应式 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_textSignalfilter 适用于新信号。