我想在 Flux 中动态添加对象
I want to add objects in Flux dynamically
我对 Spring WebFlux 中的反应式编程还很陌生。请原谅我的无知。
下面的代码没有将对象 EyeCare 添加到 Flux eyeCares。
我阅读了 Flux.create
、Flux.generate
here that seem to be used to create Flux also I read this
private Flux<EyeCare> populateFakeData(Locale locale, int count){
Flux<EyeCare> eyeCares = Flux.empty();
for(int i=0; i< count; i++){
eyeCares.concatWithValues(fakeDataService.generateEyeCare(locale));
}
return eyeCares;
}
Flux.create
或 Flux.generate
是我需要采取的解决方法吗?
- 如果是,那么 myEventProcessor 从哪里进入 code snipped
- 如何引入
Flux.create
或 Flux.generate
而不是 eyeCares.concatWithValues
?
您应该能够很容易地使用 Flux::generate
。
private Flux<EyeCare> populateFakeData(Locale locale, int count){
return Flux.generate(()->new AtomicInteger(count), (state, sink) -> {
if (state.getAndDecrement() > 0 ) {
sink.next(generateEyeCare(locale));
} else {
sink.complete();
}
return state;
});
}
为简单起见,您可以使用 range
和 map
:
private Flux<EyeCare> populateFakeData(Locale locale, int count){
return Flux.range(1, count)
.map(i -> fakeDataService.generateEyeCare(locale));
}
我对 Spring WebFlux 中的反应式编程还很陌生。请原谅我的无知。
下面的代码没有将对象 EyeCare 添加到 Flux eyeCares。
我阅读了 Flux.create
、Flux.generate
here that seem to be used to create Flux also I read this
private Flux<EyeCare> populateFakeData(Locale locale, int count){
Flux<EyeCare> eyeCares = Flux.empty();
for(int i=0; i< count; i++){
eyeCares.concatWithValues(fakeDataService.generateEyeCare(locale));
}
return eyeCares;
}
Flux.create
或Flux.generate
是我需要采取的解决方法吗?- 如果是,那么 myEventProcessor 从哪里进入 code snipped
- 如何引入
Flux.create
或Flux.generate
而不是eyeCares.concatWithValues
?
您应该能够很容易地使用 Flux::generate
。
private Flux<EyeCare> populateFakeData(Locale locale, int count){
return Flux.generate(()->new AtomicInteger(count), (state, sink) -> {
if (state.getAndDecrement() > 0 ) {
sink.next(generateEyeCare(locale));
} else {
sink.complete();
}
return state;
});
}
为简单起见,您可以使用 range
和 map
:
private Flux<EyeCare> populateFakeData(Locale locale, int count){
return Flux.range(1, count)
.map(i -> fakeDataService.generateEyeCare(locale));
}