私は親リクエストから得た各値ごとに複数のサブリクエストを処理するベストプラクティスを見つけようとしています。私はここで同じ論理 - 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 request
のsub-requests
は作業を続ける必要があります。
5。すべての要求はself.deinit
にキャンセルになるはずなので、これはすべてのself.lifetime
時にのみ動作するはずですが、私は使い捨て保存せずに、私はこのすべてが可能であるかどうかわからないんだけど、このパラメータ
を置くための正しい場所が何であるかわからないんだけど/信号を自己のプロパティとして返すので、sub-request
が何らかの形でプロパティとして格納されると問題はありません。
だからあなたの助け