gpt4 book ai didi

ios - 为什么在 rxswift 中连接 never()

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:02:41 25 4
gpt4 key购买 nike

func signup(_ username: String, password: String) -> Observable<Bool> {
// this is also just a mock
let signupResult = arc4random() % 5 == 0 ? false : true
return Observable.just(signupResult)
.concat(Observable.never())
.throttle(0.4, scheduler: MainScheduler.instance)
.take(1)
}

我在 RxSwift 中看到一些代码, 但我不明白为什么需要 concat(Observable.never())

最佳答案

我自己正在弄明白这一点,所以对它持保留态度 :)

  • Observable.just 发出一次值并立即完成;几乎不需要任何时间;
  • .throttle(0.4, scheduler: MainScheduler.instance)在序列中引入时间,用0.4s+确定返回值,
  • concat(Observable.never()) 使输入序列长时间运行,因此 throttle 首先要做一些事情。

现在 return Observable.just(signupResult) 就足以实现该功能。剩下的有什么用?

其他三个运算符会导致延迟。由于连接的 Observable 是永无止境的,throttle 将等待至少 0.4 秒一次以确定为第一个节流“ block ”发出哪个值。 take(1) 然后在 0.4 秒后发出第一个值后完成序列

对我来说,这似乎是实现延迟响应的一种非常费力的方法:)

关于ios - 为什么在 rxswift 中连接 never(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40829595/

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