假设我有一个具有以下签名的函数:
class Item {
String name;
Long id;
}
public Flux<Item> getNew(long id);
getNew()返回在 id (0..N) 之后添加的项目流。那么如何将其变成无限流呢?
所以像这样:
public Flux<Item> observe(long id) {
return Flux.interval(Duration.ofSeconds(1)).
flatMap(counter -> getNew(id)); // <-- how to use last value from getNew flux as the new id
}
我能够做到的唯一方法是使用某种类型的状态变量:
public Flux<Long> observe(long id) {
final AtomicLong last = new AtomicLong(id);
return Flux.interval(Duration.ofSeconds(1)).
flatMap(l -> getNew(last.get())).
doOnNext(last::set);
}
有没有更惯用的方法来做到这一点?我试图为此创建生成器,但我不知道如何实现它。
富国沪深
相关分类