2017-04-25 20 views
4

私は親リクエストから得た各値ごとに複数のサブリクエストを処理するベストプラクティスを見つけようとしています。私はここで同じ論理 - Reactive Cocoa 5 and ReactiveSwift network requests handlingを使用しようとしていますが、いくつか問題があります。無限スクロールハンドラ(SVPullToRefresh)
2とテーブルビューは毎回ハンドラが
3.送信「のサブと呼ばれるオブジェクトのリストを取得
1:私たちが持っている必要
ReactiveCocoa 5、ReactiveSwiftネットワークサブリクエスト処理とベストプラクティス

応答から各オブジェクトの要求」

注:
1.すべての要求(親とサブリクエスト)は、viewControllerが閉じられると取り消されます(除外される)
2.親リクエストをいつでもキャンセルする必要があります。これにより、すべてのサブリクエストもキャンセルされます。私は現在、私は「無限ハンドラ」に何をすべきか知っている

はちょっと「ダクトテープ」ですが、私はReactiveSwiftとの新たなんだ持って何

...

self.tableView.addInfiniteScrollingWithActionHandler { [unowned self] in 
    self.tempMutableProperty.value = true 
} 

self.tempMutableProperty.producer.skipNil().flatMap(.latest) { [unowned self] tempValueThatIDontNeed in 
    return self.producerForParentRequest(offset: self.offset) 
     .take(during: self.reactive.lifetime) 
     .on(
      // handlers for errors, completed, etc 
      value: { [unowned self] items in 
       self.items.append(items) 
       self.tableView.reloadData() 
       self.offset += items.count 
       // SEND REQUEST #2 FOR EACH ITEM 
      } 
    ).flatMapError { error in 
     return SignalProducer.empty 
    } 
}.observe(on: UIScheduler().start() 

ので、ご覧のとおり、私はtableViewを使ってページ設定をしています。私は各ページのオブジェクトのリストを取得しています。次に、レスポンスの各項目に対して、リクエスト#2で追加情報を取得する必要があります。


の流れと問題:もちろん
1.私はtempMutablePropertyを取り除きたいと何とかいくつかなしparent request新を開始ちょっとプロキシ
の各sub-requestは独立している必要があり、つまり、それぞれsub-requestという別個に呼び出されたvalue/errorハンドラを持っていて、10個のサブリクエストをすべて待ってから、10個のレスポンスをすべて収集して成功ハンドラを呼び出すようなことではありません。また、いくつかの特定のサブリクエストが失敗しても、実行中の他のサブリクエストには影響しません。
3.ユーザーは、リクエストプロセスの完了を待たずに検索リクエストを変更できます。つまり、ユーザーが一部のパラメータを変更すると、すべてのアイテムが消去され、sub-requests内のparent requestをキャンセルして、もう一度すべてを開始する必要があります。
4.#2に加えて、ユーザーはスクロールしてアイテムの新しい部分をフェッチすることがあります。これは新しいparent requestが開始されるはずですが、前の応答parent requestsub-requestsは作業を続ける必要があります。
5。すべての要求はself.deinitにキャンセルになるはずなので、これはすべてのself.lifetime時にのみ動作するはずですが、私は使い捨て保存せずに、私はこのすべてが可能であるかどうかわからないんだけど、このパラメータ

を置くための正しい場所が何であるかわからないんだけど/信号を自己のプロパティとして返すので、sub-requestが何らかの形でプロパティとして格納されると問題はありません。


だからあなたの助け

答えて

関連する問題