Ich bin neu in Reactive Programming und ich habe ein großes Problem, das ich nicht allein lösen kann ... Ich muss mehrere Video-Assets hochladen und in einer geordneten Reihenfolge, aber ich weiß nicht, wie es geht ich eine Reihe von PHAssets habe und ich versuche, durch jedes Element zu durchlaufen und über das Netzwerk Hier ist mein Code mit Kommentaren bisher senden:Loop mit RxSwift
for item in items {
let fileName = item.media.localIdentifier
//Observable to generate local url to be used to save the compressed video
let compressedVideoOutputUrl = videoHelper.getDocumentsURL().appendingPathComponent(fileName)
//Observable to generate a thumbnail image for the video
let thumbnailObservable = videoHelper.getBase64Thumbnail(myItem: item)
//Observable to request the video from the iPhone library
let videoObservable = videoHelper.requestVideo(myItem: item)
//Compress the video and save it on the previously generated local url
.flatMap { videoHelper.compressVideo(inputURL: $0, outputURL: compressedVideoOutputUrl) }
//Generate the thumbnail and share the video to send over the network
let send = videoObservable.flatMap { _ in thumbnailObservable }
.flatMap { api.uploadSharedFiles(item, filename: fileName, base64String: $0) }
//subscribe the observable
send.subscribe(onNext: { data in
print("- Done chain sharing Video -")
},
onError: { error in
print("Error sharing Video-> \(error.localizedDescription)")
}).disposed(by: actionDisposeBag)
}
Vielen Dank für die hervorragenden Antworten zu vermeiden, habe ich eine Frage, ich habe über concatMap gelesen, es wird in diesem Fall von Nutzen sein? – Bruno
* .concatMap() * auf der obersten Ebene garantiert, dass die Reihenfolge der Elemente downstream der Reihenfolge der * Elemente * entspricht. Überzeugen Sie sich selbst, ob Sie es brauchen. –