链接可观察对象(即网络请求)

Chaining observables (that are network requests)

我有一个名为 login 的网络请求 returns 一个 Observable<UserInfo>。我需要根据从 login 返回的数据是否有计数 > 1,从该结果进行另一个 API 调用,否则,我只需要转到另一个视图控制器。我正在尝试使用 flatMapLatest 来检查第一个请求 login 并进行下一个网络调用 jobStates(returns 和 Observable<JobState>,但是我认为我没有正确安排它们。有什么想法吗?有更好/更简单的方法吗?

这是它的样子:

我希望看到这样的内容:

func login() {
    let loginResult = networkService
        .login(login: usernameTextField.text!, password: passwordTextField.text!)
        .share()

    loginResult
        .filter { [=10=].count > 1 }
        .subscribe(onNext: { userInfo in
            // stop here and go to a different view with userInfo data
        })
        .disposed(by: disposeBag)

    let networkService = self.networkService // so you don't have to capture self below
    loginResult
        .filter { [=10=].count <= 1 }
        .flatMapLatest { networkService.jobStates(locationId: [=10=].locationId) }
        .subscribe(
            onNext: { data in
                // do whatever with data from second request
        },
            onError: { error in
                // if either request errors, you will end up here.

        })
        .disposed(by: disposeBag)
}

当您有两种不同的可能结果时,您需要两种不同的订阅。