Filter Operator API 响应在 RxSwift 中不起作用

问题描述 投票:0回答:1

我无法找出问题所在,只是根据状态代码过滤掉响应,如下所示:

代码应该根据状态代码过滤掉响应并返回

response and data
作为可观察的。

ios swift rxjs rx-swift
1个回答
1
投票

您的方法几乎没有问题:

  • 当您的
    Observable.create
    已经返回
    URLSession.shared.rx.response
    时,为什么还要使用
    Observable
  • 您的最后一个
    flatMap
    应该返回一个
    Observable
    ,但您不会从那里返回任何内容
  • URLSession.shared.rx.data
    可以为您进行
    statusCode
    检查
  • 您可以使用
    .decode
    运算符进行解码
  • 为什么它是一个返回
    T
    但被命名为
    getUsers
    的通用函数?
  • 你永远不会订阅内部
    Observable
    内部
    Observable.create
    所以你的反应链永远不会运行

鉴于这些问题,您可以调整您的代码:

func getUsers<T: Codable>(urlStr: String) -> Observable<T> {
  guard let url = URL(string: urlStr) else { return .empty() } 
  return URLSession.shared.rx.data(request: .init(url: url))
    .decode(type: T.self, decoder: JSONDecoder())
}
© www.soinside.com 2019 - 2024. All rights reserved.