过滤器运算符 API 响应在 RxSwift 中不起作用

Filter Operator API response not working in RxSwift

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

代码应该根据可观察到的状态代码和return response & data过滤掉响应。

您的方法几乎没有问题:

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

考虑到这些问题,您可以将代码调整为:

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())
}