Observable验证每个项目

时间:2017-12-12 06:09:59

标签: exception rx-java rx-java2

如何验证Observable中的每个项目,如果条件失败则返回错误? 现在我在switchMap内部使用if,但此解决方案看起来不太好:

Observable.just(1, 2, 3, -1, 4)
    .switchMap(x -> {
        if (x >= 0) {
            return Observable.just(x);
        } else {
            return Observable.error(new Exception("Input value should be positive"));
        }
    })
    .subscribe(
        x -> System.out.printf("value=%d\n", x),
        err -> System.out.printf("error: %s\n", err.getMessage())
    );

我可以使用任何内置方法代替吗?

1 个答案:

答案 0 :(得分:1)

您可以使用doOnNext()来抛出异常。

Observable.just(1, 2, 3, -1, 4)
        .doOnNext(x -> {
            if (x < 0) throw Exception("Input value should be positive");
        })
        .subscribe(
            x -> System.out.printf("value=%d\n", x),
            err -> System.out.printf("error: %s\n", err.message)
        );