RxSwift로 좋은 느낌으로 Queue 처리하는 RxObservableQueue를 만들었다
요약
RxObservableQueue (Carthage, Cocoapods 대응 )
Observable에서 emit 된 item을 queue로 유지하고 원하는 타이밍에 원하는 병렬 수로 꺼낼 수 있습니다.
(알기 힘든 )
좀 더 이해하기 쉬운 유스 케이스
예를 들어, 사용자 조작에 대해 대량의 객체를 네트워크에서 미리 읽을 때 사용할 수 있습니다.
아메쿠루 에서 사용하기 위해 만들었습니다. 여기의 요구 사항은 다음과 같습니다.
예를 들어, 사용자 조작에 대해 대량의 객체를 네트워크에서 미리 읽을 때 사용할 수 있습니다.
아메쿠루 에서 사용하기 위해 만들었습니다. 여기의 요구 사항은 다음과 같습니다.
상기의 처리를 이런 느낌으로 걸게 됩니다.
// 例: Observable<MKMapRect> ユーザが地図領域を変更するとemitされるObservable
visibleMapRect
// 地図領域をflatMapLatestし、最後の地図領域分以外はdispose()する
.flatMapLatest { mapRect -> Observable<(Request, Counter)> in
// 地図領域から、先読み処理に必要な情報が入ったRequestをemitするObservableを作成する
let request: Observable<Request> = makeRequest(mapRect)
// RxObservableQueueで同時実行数3でキュー作成
return RxObservableQueue.create(observable: request, maxConcurrentCount: 3)
}
.subscribe(onNext: { request, counter in
// 同時実行数を超えない様にrequestがemitされる
// 処理が終わったらコンプリーションハンドラでcounter.signal()すると、次のrequestがemitされる
model.process(request, completionHandler: { counter.signal() })
})
.addDisposableTo(bag)
Reference
이 문제에 관하여(RxSwift로 좋은 느낌으로 Queue 처리하는 RxObservableQueue를 만들었다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/notohiro/items/667a5a79ab3bc986a9f8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)