gpt4 book ai didi

java - 回顾 RxJava 中的链

转载 作者:行者123 更新时间:2023-11-30 08:56:41 24 4
gpt4 key购买 nike

Random rand = new Random();
Observable<Integer> random1 = Observable.just(rand.nextInt());
Observable<Integer> random2 = random1.flatMap(r1->Observable.just(r1 * rand.nextInt()));
random2.subscribe(System.out::println);

上面的代码只是取几个随机数,将它们相乘,然后打印输出。

这是我的问题:在我打印出结果时,有没有一种优雅的方法可以让我获得第一个随机值?请注意,我的实际系统正在进行异步调用,而不仅仅是生成随机数。

以下是一些我认为不优雅的示例:

Random rand = new Random();
Observable<Integer> random1 = Observable.just(rand.nextInt());
random1.subscribe(r1->{
Observable<Integer> random2 = Observable.just(r1 * rand.nextInt());
random2.subscribe(r2->{
System.out.println(r1);
System.out.println(r2);
});
});

.

Random rand = new Random();
Observable<Integer> random1 = Observable.just(rand.nextInt());
Observable<int[]> result = random1.flatMap(r1->{
int[] pair = new int[2];
pair[0] = r1;
pair[1] = r1 * rand.nextInt();
return Observable.just(pair);
});
result.subscribe(pair-> {
System.out.println(pair[0]);
System.out.println(pair[1]);
});

.

Random rand = new Random();
int[] hack = new int[1];
Observable<Integer> random1 = Observable.just(rand.nextInt()).doOnNext(r1->hack[0]=r1);
Observable<Integer> random2 = random1.flatMap(r1->Observable.just(r1 * rand.nextInt()));
random2.subscribe(r2->{
System.out.println(hack[0]);
System.out.println(r2);
});

最后,还有这个,我不确定这是不是一个好习惯:

Random rand = new Random();
Observable<Integer> random1 = Observable.just(rand.nextInt());
Observable<Integer> random2 = random1.flatMap(r1->Observable.just(r1 * rand.nextInt()));
random2.subscribe(r2-> System.out.println(random1.toBlocking().first()));

最佳答案

有一个 flatMap 重载,它允许您指定一个 Func2,它接收源值和 Observable 中的每个值并为其展平:

Random rand = new Random();
Observable<Integer> random1 = Observable.just(rand.nextInt());
Observable<List<Integer>> random2 = random1.flatMap(
r1 -> Observable.just(r1 * rand.nextInt()),
(r1, r2) -> Arrays.asList(r1, r2));

random2.subscribe(System.out::println);

关于java - 回顾 RxJava 中的链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28510740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com