为有牺牲多壮志,敢教日月换新天。

[RxSwift]10.4、共享 附加作用

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(let_us_code)
➤博主域名:https://www.zengqiang.org
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/13581316.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

 

文档中一些特征序列,会有如下特性:

共享 附加作用

不共享 附加作用

那什么是共享 附加作用,什么是不共享 附加作用

共享 附加作用

...
let observable: Observable<Teacher> = API.teacher(teacherId: 1)
let shareSideEffects: Driver<Teacher> = observable.asDriver(onErrorDriveWith: .empty())

let observer0: (Teacher) -> () = ...
let observer1: (Teacher) -> () = ...

shareSideEffects.drive(onNext: observer0)
shareSideEffects.drive(onNext: observer1) // 第二次订阅

如果一个序列共享 附加作用,那在第二次订阅时,不会重新发起网络请求,而是共享第一次网络请求(附加作用)。

不共享 附加作用

...
let observable: Observable<Teacher> = API.teacher(teacherId: 1)
let notShareSideEffects: Single<Teacher> = observable.asSingle()

let observer0: (Teacher) -> () = ...
let observer1: (Teacher) -> () = ...

notShareSideEffects.subscribe(onSuccess: observer0)
notShareSideEffects.subscribe(onSuccess: observer1) // 第二次订阅

如果一个序列不共享 附加作用,那在第二次订阅时,会重新发起网络请求,而不是共享第一次网络请求(附加作用)。

因此我们需要注意,如果一个网络请求序列,他不共享 附加作用,那每一次订阅时就会单独发起网络请求。这时最好改用 共享 附加作用 的序列,或者使用 share 操作符。

posted @ 2020-08-29 10:48  为敢技术  阅读(257)  评论(0)    收藏  举报