gpt4 book ai didi

ios - ReactiveSwift 中 PublishSubject 的等价物是什么?

转载 作者:行者123 更新时间:2023-11-28 23:22:19 27 4
gpt4 key购买 nike

我在我的项目中使用 ReactiveSwift,我想知道 PublishSubject 的等价物是什么?

例如在 RXSwift 中我们可以这样做:

let disposeBag = DisposeBag()

let pubSubj = PublishSubject<String>()

pubSubj.on(.next("(next 1")) //event emitted to no subscribers

pubSubj.subscribe({ //subscriber added, but no replay of "next 1"
print("line: \(#line),", "event: \($0)")
})
.disposed(by: disposeBag)

pubSubj.on(.next("(next 2")) //event emitted and received by subscriber
pubSubj.onError(MyError.error1) //emits error and terminates sequence

pubSubj.on(.next("next 3")) //pubSubj cannot emit this event
/* prints:
line: 8, event: next((next 2)
line: 8, event: error(error1)
*/

最佳答案

ReactiveSwift 没有像 Subject 这样可以同时作为信号输入和输出的单一类型。相反,您可以使用 Signal.pipe() 来创建输入及其对应的输出信号:

import ReactiveSwift

enum MyError: Error { case error1 }

let (lifetime, token) = Lifetime.make()

let (signal, input) = Signal<String, MyError>.pipe()

input.send(value: "1")

signal
.take(during: lifetime)
.observe {
print("line: \(#line),", "event: \($0)")
}

input.send(value: "2")
input.send(error: .error1)

input.send(value: "3")

/* prints:
line: 14, event: VALUE 2
line: 14, event: FAILED error1
*/

关于ios - ReactiveSwift 中 PublishSubject 的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59454846/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com