RxSwift 优化触发器
RxSwift Optimising Triggers
我在应用程序进入前台时执行任务。
我也想在我的视图模型初始化后立即执行此任务。
这个要怎么写才能避免复制粘贴任务代码?
目前代码如下所示:
init(dependencies: Dependencies) {
self.dependencies = dependencies
dependencies.apiClient.notificationsCount()
.map { [=10=].value > 0 ? String([=10=].value) : nil }
.bind(to: tabBadgeValue)
.disposed(by: disposeBag)
dependencies.notification.notification(for: .appWillEnterForeground)
.map { _ in () }
.flatMapLatest(dependencies.apiClient.notificationsCount)
.map { [=10=].value > 0 ? String([=10=].value) : nil }
.bind(to: tabBadgeValue)
.disposed(by: disposeBag)
}
您可以使用 startWith
在收到第一个通知之前发出下一个事件:
init(dependencies: Dependencies) {
self.dependencies = dependencies
dependencies.notification.notification(for: .appWillEnterForeground)
.map { _ in () }
.startWith(())
.flatMapLatest(dependencies.apiClient.notificationsCount)
.map { [=10=].value > 0 ? String([=10=].value) : nil }
.bind(to: tabBadgeValue)
.disposed(by: disposeBag)
}
我在应用程序进入前台时执行任务。 我也想在我的视图模型初始化后立即执行此任务。
这个要怎么写才能避免复制粘贴任务代码? 目前代码如下所示:
init(dependencies: Dependencies) {
self.dependencies = dependencies
dependencies.apiClient.notificationsCount()
.map { [=10=].value > 0 ? String([=10=].value) : nil }
.bind(to: tabBadgeValue)
.disposed(by: disposeBag)
dependencies.notification.notification(for: .appWillEnterForeground)
.map { _ in () }
.flatMapLatest(dependencies.apiClient.notificationsCount)
.map { [=10=].value > 0 ? String([=10=].value) : nil }
.bind(to: tabBadgeValue)
.disposed(by: disposeBag)
}
您可以使用 startWith
在收到第一个通知之前发出下一个事件:
init(dependencies: Dependencies) {
self.dependencies = dependencies
dependencies.notification.notification(for: .appWillEnterForeground)
.map { _ in () }
.startWith(())
.flatMapLatest(dependencies.apiClient.notificationsCount)
.map { [=10=].value > 0 ? String([=10=].value) : nil }
.bind(to: tabBadgeValue)
.disposed(by: disposeBag)
}