Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 将PromiseKit转换为信号&;信号发生器_Swift_Promisekit_Reactive Swift - Fatal编程技术网

Swift 将PromiseKit转换为信号&;信号发生器

Swift 将PromiseKit转换为信号&;信号发生器,swift,promisekit,reactive-swift,Swift,Promisekit,Reactive Swift,我正试图将一个承诺从转换为信号发生器,但我很难想出它。有人能给我指出正确的方向吗 目前我有: extension SignalProducer { func from(promise: Promise<Value>) -> SignalProducer<Value, Error> { return SignalProducer { observer, disposable in promise.then {

我正试图将一个
承诺
从转换为
信号发生器
,但我很难想出它。有人能给我指出正确的方向吗

目前我有:

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)
            }
        }
    }
}
扩展信号发生器{
func from(promise:promise)->SignalProducer{
返回信号发生器{观察者,可在
我保证,那么{
发送(值:$0)
observer.sendCompleted()
}.`catch`{中的错误
send(错误:error)
}
}
}
}

我试图模仿rxjs的
fromPromise
方法。

这就是我想到的

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

}
扩展信号发生器,其中信号发生器。错误:Swift.Error{
来自(承诺:承诺)->SignalProducer的静态函数{
返回信号发生器{(观察者:观察者,一次性:一次性)在
promise.then中的{value->()
发送(值:value)
observer.sendCompleted()
}.catch{(错误:Swift.error)->Void in
发送(错误:错误为!错误)
}
}
}
}

这是我自己很难做到的事情。似乎Promisekit的本质相当神秘。