2017-04-16 67 views
1

我在嘗試將Promise<T>PromiseKit轉換爲ReactiveSwiftSignalProducer但我無法處理它。有人能指出我正確的方向嗎?將PromiseKit轉換爲Signal&SignalProducer

目前我有:

extension SignalProducer { 
    func from(promise: Promise<Value>) -> SignalProducer<Value, Error> { 
     return SignalProducer { observer, disposable in 
      promise.then { 
       observer.send(value: $0) 
       observer.sendCompleted() 
      }.`catch` { error in 
       observer.send(error: error) 
      } 
     } 
    } 
} 

我試圖仿效rxjs' fromPromise方法。

+0

這是我在做自己時遇到的麻煩。好像Promisekit的本質似乎很神祕。 –

回答

1

這就是我想出的。

extension SignalProducer where SignalProducer.Error: Swift.Error { 

    static func from(promise: Promise<Value>) -> SignalProducer<Value, Error> { 
     return SignalProducer { (observer: Observer<Value, Error>, disposable: Disposable) in 
      promise.then { value ->() in 
       observer.send(value: value) 
       observer.sendCompleted() 
      }.catch { (error: Swift.Error) -> Void in 
       observer.send(error: error as! Error) 
      } 
     } 
    } 

}