Reactivecocoa: Question - Comment convertir Signal en SignalProducer?

Créé le 5 nov. 2015  ·  4Commentaires  ·  Source: ReactiveCocoa/ReactiveCocoa

J'ai récemment commencé à convertir de RAC 3 en RAC 4 et j'ai découvert que takeUntil sur SignalProducer accepte maintenant SignalProducer par opposition à Signal dans RAC 3 .

C'est ma méthode actuelle dans extension SignalType et ça me semble assez hackish:

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

Puis-je améliorer cela? Merci!

question

Commentaire le plus utile

Ceci est déjà disponible dans le framework! :)

let producer = SignalProducer(signal: signal)

Cela crée essentiellement un producteur sans effets secondaires (voir # 2449)

Tous les 4 commentaires

Il y a une surcharge takeUntil de SignalProducer qui prend un Signal de v4.0.0-alpha.2: https://github.com/ReactiveCocoa/ReactiveCocoa/blob/v4 .0.0-alpha.2 / ReactiveCocoa / Swift / SignalProducer.swift # L557

Il est temps de faire une mise à jour! Merci: +1:

@ikesyo Juste par curiosité, mon approche de conversion de Signal en SignalProducer -elle sous-optimale? Cela peut-il être mieux fait? Je vois que la plupart de l'interopérabilité entre Signal et SignalProducer vient des opérateurs de lift ing Signal pour accepter SignalProducer (et à juste titre). La conversion de Signal en SignalProducer mal vue?

Ceci est déjà disponible dans le framework! :)

let producer = SignalProducer(signal: signal)

Cela crée essentiellement un producteur sans effets secondaires (voir # 2449)

Cette page vous a été utile?
0 / 5 - 0 notes