RxJava обрабатывает несколько обратных вызовов внутри наблюдаемого

У меня есть Observable который имеет несколько обратных вызовов внутри него. Первый выбирает список с сервера, а второй – это обратный вызов изменения элемента, который указывает, изменился ли элемент в списке. Это моя текущая реализация:

 Flowable.create({ emitter -> val offlineManager = OfflineManager.getInstance(context) offlineManager.listOfflineRegions(object : OfflineManager.ListOfflineRegionsCallback { override fun onList(offlineRegions: Array<OfflineRegion>) { offlineRegionsFetch(offlineRegions, emitter) } override fun onError(error: String) { emitter.onError(IllegalStateException("Saved offline regions read error")) } }) }, BackpressureStrategy.BUFFER) private fun offlineRegionsFetch(offlineRegionList: Array<OfflineRegion>, emitter: FlowableEmitter<List<OfflineMap>>) { if (offlineRegionList.isNotEmpty()) { val count = 0 val offlineMaps = offlineRegionList.map { OfflineMap(it.id.toString(), OfflineMapManager.getRegionName(it), 0L, OfflineMapStatus(FETCH)) } as ArrayList<OfflineMap> offlineRegionList.forEachIndexed { index, offlineRegion -> offlineRegion.getStatus(object : com.mapbox.mapboxsdk.offline.OfflineRegion.OfflineRegionStatusCallback { override fun onStatus(status: OfflineRegionStatus) { if (status.isComplete) { offlineMaps[index] = OfflineMap(offlineRegion.id.toString(), OfflineMapManager.getRegionName(offlineRegion), status.completedResourceSize, OfflineMapStatus(SUCCESS)) count + 1 } else if (status.downloadState == OfflineRegion.STATE_INACTIVE) { offlineMaps[index] = OfflineMap(offlineRegion.id.toString(), OfflineMapManager.getRegionName(offlineRegion), status.completedResourceSize, OfflineMapStatus(PAUSED)) count + 1 } else if (!status.isRequiredResourceCountPrecise) { offlineMaps[index] = OfflineMap(offlineRegion.id.toString(), OfflineMapManager.getRegionName(offlineRegion), 0L, OfflineMapStatus(DOWNLOAD_STARTED)) count + 1 } else if (!status.isComplete && status.isRequiredResourceCountPrecise) { val percentage = 100.0 * status.completedResourceCount / status.requiredResourceCount offlineMaps[index] = OfflineMap(offlineRegion.id.toString(), OfflineMapManager.getRegionName(offlineRegion), status.completedResourceSize, OfflineMapStatus(PROGRESS, offlineRegion.id.toString(), Math.round(percentage))) count + 1 } } override fun onError(error: String) { offlineMaps[index] = OfflineMap(offlineRegion.id.toString(), OfflineMapManager.getRegionName(offlineRegion), -1L, OfflineMapStatus(ERROR, offlineRegion.id.toString(), errorCode = errorMap(error), errorMsg = error)) count + 1 } }) } if (count == offlineRegionList.size) { emitter.onNext(offlineMaps) } } else { emitter.onNext(listOf()) } } 

onNext здесь даже не происходит, так как обратный вызов статуса isync. Как я могу сделать так, чтобы onNext обратного вызова, а затем срабатывает . Также его n число обратных вызовов статуса, где n – количество элементов в списке.