2017-06-01 2 views
0

これは私の非反応性コードです。RXAlamofireがデータを返さない(エラーであるかどうか)

FUNC getLatestHtml2(){

Alamofire.request("https://www.everfest.com/fest300").responseString { response in 
    print("\(response.result.isSuccess)") 
    if let html = response.result.value { 
     self.parseHTML(html: html) 
    } 
} 

}

しかし、私はこのコードを使用して、それが反応する場合。

func getLatestHtml1() -> Observable<String> { 

     return Observable<String>.create { (observer) -> Disposable in 
      let request = Alamofire 
       .request("https://www.everfest.com/fest300") 
       .responseString { response in 
        print(response.result.value) 
        observer.onNext(response.result.value!) 
        observer.onCompleted() 

      } 
      return Disposables.create { request.cancel() } 


     } 
    } 

printステートメントにデータがありません。どこにもデータやエラーを生じなかっ

func getLatestHtml() -> Observable<String?> { 
     return RxAlamofire 

      .requestData(.get,"https://web.archive.org/web/20170429080421/https://www.everfest.com/fest300") 
      .debug() 
      .catchError { error in 
       print(error) 
       return Observable.never() 
      } 
      .map { (response, value) in 
       print(response.statusCode) 
       guard response.statusCode == 200 else { return nil } 
       print(value) 
       return String(data: value, encoding: String.Encoding.utf8) 
      } 
      .asObservable() 



    } 

:私も、私はこのコードの正しい方法であり、それはエラーチェックを持っている感じRxAlamofireを、使用していました。私の構文が間違っているのか、あるいは反応プログラミングに関する考えが間違っているかを知る必要があります。

私はこれを.getLatestHTMLX()と呼びます。ありがとう!

答えて

0

Observableは怠惰であり、監視されていなければ何の仕事もしません(そして、誰も見ていないとすぐに機能しなくなります)。これは、観測可能なものを購読する必要があることを意味します値。

また、observableを明示的に共有しない限り、すべてのサブスクライバに対して新しい要求が開始されます。

+0

ありがとうございました。ビューにバインドしたら、正しく動作しました。説明ありがとう。 –

関連する問題