将 PromiseKit 转换为 Signal 和 SignalProducer

Posted

技术标签:

【中文标题】将 PromiseKit 转换为 Signal 和 SignalProducer【英文标题】:Converting PromiseKit to Signal & SignalProducer 【发布时间】:2017-04-16 21:54:28 【问题描述】:

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

【问题讨论】:

这是我自己做的有困难的事情。似乎 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)
            
        
    


【讨论】:

以上是关于将 PromiseKit 转换为 Signal 和 SignalProducer的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PromiseKit 6.3 返回 Promise<JSON>

使用 PromiseKit 6 在 Swift 4.2 中缓存

恢复块的无效转换,PromiseKit

PromiseKit 6 错误无法转换错误

NSDictionary 的 PromiseKit 看不见的类型转换

将整数转换为十六进制和十六进制转换为整数