1

我正在尝试将Promise<T>PromiseKit的 a 转换为ReactiveSwift 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方法。

4

1 回答 1

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)
            }
        }
    }

}
于 2017-04-16T22:56:35.730 回答