反应式编程 – .subscribe和.drive之间的区别是什么

反应式编程 – .subscribe和.drive之间的区别是什么,第1张

概述我是反应式编程的新手,这是我正在尝试的 .驾驶 searchController.rx.text .asDriver() .drive(onNext: { (element) in print(element) }).disposed(by: disposeBag) .订阅 searchController.rx.text 我是反应式编程的新手,这是我正在尝试的

.驾驶

searchController.rx.text        .asDriver()        .drive(onNext: { (element) in            print(element)        }).disposed(by: disposeBag)

.订阅

searchController.rx.text        .asObservable()        .subscribe(onNext: { (element) in            print(element)        }).disposed(by: disposeBag)

两个块的工作方式完全相同,使用.drive over .subscribe的目的是什么?在哪种情况下我们应该使用.drive over .subscribe?

任何帮助将不胜感激

驱动程序与Observable略有不同.来自文档:

Trait that represents observable sequence with following propertIEs:

it never fails it delivers events on MainScheduler.instance share(replay: 1,scope: .whileConnected) sharing strategy

我假设searchController.rx.text永远不会失败,在这种情况下不需要共享.

所以我们只有一点让你的情况与众不同:

it delivers events on MainScheduler.instance

你可以自己检查一下.在订阅之前插入此内容并且您的事件将不会在主线程上传递:

.observeOn(ConcurrentdispatchQueueScheduler(qos: .background))

这就是我在我的代码中检查它的方式:

something    .asObservable()    .observeOn(ConcurrentdispatchQueueScheduler(qos: .background))    .subscribe(onNext: { _ in        print("observable is on main thread: ",Thread.isMainThread)    })something    .asDriver()    .drive(onNext: { _ in        print("driver is on main thread: ",Thread.isMainThread)    })

日志:

driver is on main thread: true

observable is on main thread: false

在哪种情况下我们应该使用.drive:

使用UI时.为什么?来自文档:

important

Use UIKit classes only from your app’s main thread or main dispatch queue,unless otherwise indicated. This restriction particularly applIEs to classes derived from UIResponder or that involve manipulating your app’s user interface in any way.

总结

以上是内存溢出为你收集整理的反应式编程 – .subscribe和.drive之间的区别是什么全部内容,希望文章能够帮你解决反应式编程 – .subscribe和.drive之间的区别是什么所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存