对Publisher执行副作用

问题描述 投票:0回答:1

我正在尝试进行副作用 Publisher我找不到任何一个操作符可以让我做这样的事情。准确地说,我正在寻找一个类似于RxSwift的 do(on:).

下面是我想做的事情.我正在为一个第三方SDK提供的代表写一个反应式包装器。这是一个与BLE设备交互的SDK。我有这样的方法 startScanningstopScanning 而我想实现的是对信号做出反应,并调用 stopScanning 作为任何错误或完整事件的副作用。到目前为止,我有这样的东西。

newDeviceFoundPublisher
            .timeout(.seconds(timeout), scheduler: DispatchQueue.global())
            .eraseToAnyPublisher()

而我想实现的是这样的东西:

newDeviceFoundPublisher
            .timeout(.seconds(timeout), scheduler: DispatchQueue.global())
            .doOnError {
                manager.stopScanning()
            }
            .doOnComplete {
                manager.stopScanning()
            }
            .eraseToAnyPublisher()

是否已经有了这样的东西 或者是我遗漏了什么东西 我可以在Combine中使用一些东西来得到结果?

ios swift combine frp
1个回答
2
投票

你可能要找的是 .handleEvents 操作符。你可以用五个不同的参数中的任何一个来实现它;它们都是可选的,所以只实现你需要的那些。错误和完成都会被视为 receiveCompletion:.

请注意,如果你不这样做,错误仍然会在管道中流淌。catch 它!(无论如何,完成会顺着管道流下来,我想你是无法阻止的。)

© www.soinside.com 2019 - 2024. All rights reserved.