我在应用程序进入前台时执行任务。
我还希望在初始化视图模型后立即执行此任务。
如何编写此代码以避免复制和粘贴任务代码?
当前代码如下所示:

init(dependencies: Dependencies) {
        self.dependencies = dependencies

        dependencies.apiClient.notificationsCount()
            .map { $0.value > 0 ? String($0.value) : nil }
            .bind(to: tabBadgeValue)
            .disposed(by: disposeBag)
        dependencies.notification.notification(for: .appWillEnterForeground)
            .map { _ in () }
            .flatMapLatest(dependencies.apiClient.notificationsCount)
            .map { $0.value > 0 ? String($0.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 { $0.value > 0 ? String($0.value) : nil }
        .bind(to: tabBadgeValue)
        .disposed(by: disposeBag)
}

关于swift - RxSwift优化触发器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45030852/

10-14 23:20