2017-04-16 69 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) 
      } 
     } 
    } 

}