gpt4 book ai didi

ios - PromiseKit 是否有 RxSwift Zip 替代品?

转载 作者:行者123 更新时间:2023-11-28 13:47:13 25 4
gpt4 key购买 nike

我目前正在开展一个项目,该项目需要重构 RxSwift 依赖项以引入 PromiseKit

我对 RxSwiftPromiseKit 不是很熟悉,所以如果这很明显,请原谅我。

我仍在寻找一种方法来处理 Zip 用例

override func start() -> Observable<CoordinationResult> {

let tabBarController = UITabBarController()
let tabs: [SectionTab] = [.feed]
let coordinationResults = Observable.from(configure(tabBarController: tabBarController, withTabs: tabs)).merge()

window.rootViewController = tabBarController
window.makeKeyAndVisible()

return coordinationResults
.take(1)
}

private func configure(tabBarController: UITabBarController, withTabs tabs: [SectionTab]) -> [Observable<Void>] {
let navControllers = tabs
.map { tab -> UINavigationController in
let navController = BaseNavigationController()
navController.tabBarItem = UITabBarItem(title: tab.title, image: nil, selectedImage: nil)
return navController
}

tabBarController.viewControllers = navControllers
tabBarController.view.backgroundColor = UIColor.white // Fix dark shadow in nav bar on segue

return zip(tabs, navControllers)
.map { (tab, navController) in
switch tab {
case .feed:
let coordinator = FeedCoordinator(navigationController: navController, dependencies: dependencies)
return coordinate(to: coordinator)
}
}
}

据我了解,Zip 结合了 2 个 Observable 并允许您对它们进行操作,发出单个 observable,这基本上是 2 个原始 observable 和您的操作的结果。

最佳答案

首先,您的代码片段包括 Apple 的 Swift zip,它与响应式编程或 RxSwift 无关。
https://developer.apple.com/documentation/swift/1541125-zip

在您的例子中,它只是简单地组合了两个数组 tabsnavControllers 成对。

您对响应式 Zip 运算符的理解有点过于简化了压缩具有多个发射值的流的更复杂情况。
如有疑问,请务必检查弹珠图: http://reactivex.io/documentation/operators/zip.html

因此你最初的直觉理解更符合CombineLatest http://reactivex.io/documentation/operators/combinelatest.html

对于您最初的问题,无论包含的代码如何 - 假设一个 super 简化的场景,其中您 ZipCombineLatest 两个流具有一个发射值,您可以实现类似的东西PromiseKitwhen(resolved: guarantees).done {

关于ios - PromiseKit 是否有 RxSwift Zip 替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55256454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com