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)
}