【问题标题】:RxSwift: onDisposed activated before Alamofire return dataRxSwift:在 Alamofire 返回数据之前激活 onDisposed
【发布时间】:2016-12-30 12:00:13
【问题描述】:

我正在尝试使用 rxSwift 和 Alamofire 从 REST (swift 2.3) 获取 JSON 数据。这是我的代码:

  func getArticles(articlesReq: ArticlesReq) - > Observable < [Article] > {
      return Observable < [Article] > .create {
          observer in
              let request = Alamofire.request(.POST, apiPath, parameters: DataHelper().convertStringToDictionary(JSONString), encoding: .JSON)
                  .responseArray {
                      (response: Response < [Article], NSError > ) in
                          if let articlesArray = response.result.value {
                              observer.on(.Next(articlesArray))
                          }
                          observer.on(.Completed)
                  }
          return AnonymousDisposable {
              request.cancel()
          }

      }

  }

  getArticles(articlesReq).observeOn(MainScheduler.instance)
      .subscribe(
          onNext: {
              data in
              print(data)
          },
          onError: {
              error in
              print(error)
          },
          onCompleted: {
              print("Completed")
          },
          onDisposed: {
              print("Disposed")
          }
      ).addDisposableTo(db)

onDisposed 在 Alamofire.request 返回数据之前返回数据(onNext、onError、onCompleted 不返回数据)。如何等待回复?

【问题讨论】:

    标签: swift alamofire rx-swift


    【解决方案1】:

    尽量保持对disposbag 的强烈引用,如下所示:

    let disposeBag = DisposeBag()
    
    func setupRx() {
    
      getArticles(articlesReq).observeOn(MainScheduler.instance)
          .subscribe(onNext: {
              print("onNext")
            // ... use $0 parameter
          }, onError: {
              print("onError")
            // ... use $0 parameter
          }, onCompleted: { 
              print("onCompelete")
          }, onDisposed: nil)
      .addDisposableTo(disposeBag)
    
    }
    

    您的disposeBag 应该比响应更长寿。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 2017-08-07
      • 2014-05-06
      • 2017-01-29
      相关资源
      最近更新 更多