Reactivecocoa: Вопрос - Как преобразовать Signal в SignalProducer?

Созданный на 5 нояб. 2015  ·  4Комментарии  ·  Источник: ReactiveCocoa/ReactiveCocoa

Недавно я начал преобразовывать RAC 3 в RAC 4 и обнаружил, что takeUntil на SignalProducer теперь принимает SignalProducer вместо Signal в RAC 3 .

Это мой текущий метод в extension SignalType и он кажется довольно хакерским:

func toSignalProducer() -> SignalProducer<T, E> {
  return SignalProducer { (sink, _) in
    self.observe(
      next: { t in sendNext(sink, t) },
      completed: { _ in sendCompleted(sink) }
    )
  }
}

Могу я это улучшить? Спасибо!

question

Самый полезный комментарий

Это уже доступно в рамках! :)

let producer = SignalProducer(signal: signal)

По сути, это создает производителя без побочных эффектов (см. №2449).

Все 4 Комментарий

Существует takeUntil перегрузка SignalProducer которая принимает Signal из v4.0.0-alpha.2: https://github.com/ReactiveCocoa/ReactiveCocoa/blob/v4 .0.0-alpha.2 / ReactiveCocoa / Swift / SignalProducer.swift # L557

Пришло время обновления! Спасибо: +1:

@ikesyo Просто из любопытства, мой подход к преобразованию Signal в SignalProducer неоптимален? Можно это сделать лучше? Я вижу, что наибольшая совместимость между Signal и SignalProducer операторами lift ing Signal , которые принимают SignalProducer (и это правильно). Не одобряется ли преобразование Signal в SignalProducer ?

Это уже доступно в рамках! :)

let producer = SignalProducer(signal: signal)

По сути, это создает производителя без побочных эффектов (см. №2449).

Была ли эта страница полезной?
0 / 5 - 0 рейтинги