Как мы можем синхронизировать два асинхронных вызова с помощью RxJava? В приведенном ниже примере метод contentService.listContents
, который является вызовом API, должен сначала завершиться перед выполнением метода processSchema
для каждой схемы.
schemaService.listSchema()
.toObservable()
.flatMapIterable(schemas -> {
schemas.forEach(schema -> {
// async call
contentService.listContents(schema.getName()).subscribe(contents -> {
doSomethingWithThe(contents);
});
});
// contentService.listContents` must complete first before
// processSchema should be called for each schema
return schemas;
}).subscribe(schema -> { processSchema(schema); },
error -> { Console.error(error.getMessage()); });
Проблема с кодом над processSchema
не будет ждать contentService.listContents
, так как он асинхронный и не синхронизируется друг с другом.