Buffering, throttling, and debouncing
Here is one interesting example:
Path path = Paths.get("src", "main", "resources"); Observable<String> data = CreateObservable .listFolder(path, "*") .flatMap(file -> { if (!Files.isDirectory(file)) { return CreateObservable .from(file) .subscribeOn(Schedulers.io()); } return Observable.empty(); }); subscribePrint(data, "Too many lines");
This goes through all the files in a folder and reads all of them in parallel if they are not folders themselves. For the example, while I'm running it, there are five text files in the folder, and one of them is quite large. While printing the content of these files with our subscribePrint()
method, we get something that looks like this:
Too many lines : Morbi nec nulla ipsum. Too many lines : Proin eu tellus tortor. Too many lines : Lorem ipsum dolor sit am Error from Too many lines: rx.exceptions.MissingBackpressureException Too many lines : Vivamus non vulputate tellus, at faucibus...