0

我有这样的代码:

List<Mono> monoList = foo();
//await when all Monos are finished
try {
    Flux.fromIterable(monoList)
            .flatMap(Function.identity())
            .then()
            .block();

} catch (Exception e) {
    log.warn("error", e);
}

当所有 MONO 都成功完成时,它工作得很好,但如果至少一个 Mono 完成错误,它就不起作用。方法block抛出异常并中断所有其他单声道。因此,当所有单声道成功完成或发生第一个错误时,此代码将等待。

当所有 Monos 完成时如何等待monoList(成功与否无关紧要)

4

1 回答 1

0

这有效:

  try {
        Flux.fromIterable(monoList)
                .flatMap(Function.identity())
                .then()
                .onErrorContinue((throwable, o) -> {
                    //just ignore it we've already caught all errors
                })
                .block();

    } catch (Exception e) {
        log.warn("Polling finished with exceptions", e);
    }
于 2019-12-13T08:56:28.780 回答