Just
Just 是 Combine 中的一个简单发布者,它会发布一个单一的值并立即完成。它是一个很基础的发布者,用于快速传递一个值到订阅者,通常用于测试或简单的场景中。
使用示例:
基本用法:
Just用来创建一个只发布单一值的发布者。import Combine let publisher = Just(42) // 创建一个发布者,发布值 42 let subscription = publisher .sink(receiveValue: { value in print("Received value: \(value)") })输出:
Received value: 42这段代码中,
Just(42)创建了一个发布者,它发布值42并立即完成。sink方法是订阅者,用于接收和处理发布的值。发布者的生命周期:
Just发布者在发布完数据后会立刻完成,不会发出错误或进一步的事件。如果你订阅它,它会立即发出值并完成。与
sink一起使用:sink是一个订阅者,它接受一个闭包用于处理发布的值。它还可以处理完成事件和错误事件,尽管Just不会发布错误。let publisher = Just("Hello, Combine!") let subscription = publisher .sink(receiveCompletion: { completion in switch completion { case .finished: print("Publisher completed successfully.") case .failure(let error): print("Publisher failed with error: \(error)") } }, receiveValue: { value in print("Received value: \(value)") })输出:
Received value: Hello, Combine! Publisher completed successfully.类型注解:
Just需要明确知道它发布的值的类型,如果传递的是一个没有类型注解的常量,Swift 编译器可能会要求你指定类型。let publisher: Just<Int> = Just(3) // 明确声明为 Int 类型的 Just 发布者
特点:
仅发布一个值并立即完成。
不会产生错误,
Just发布者的Failure类型是Never。简单易用,通常用于简单的场景或作为测试用的 mock 发布者。
与其他发布者的比较:
Just 与 PassthroughSubject 的主要区别是:Just 只发布一个值并完成,而 PassthroughSubject 可以动态地发布多个值,并且没有完成或错误的强制要求。
Last updated