我有一个api需要调用3个其他api,第二个和第三个api调用依赖于第一个的结果。
webClient1.getApi1(request.getId())
.subscribe(api1Response -> {
if (api1Response.hasData()) {
Mono<ApiTwoResponse> monoTwo = webClient2
.post()
.syncBody(...)
.bodyToMono(ApiTwoResponse.class)
monoTwo.subscribe(two -> log.info(two));
Mono<ApiThreeResponse> monoThree = webClient3
.put()
.syncBody(...)
.bodyToMono(ApiThreeResponse.class)
monoThree.subscribe(three -> log.info(three));
}
});
Api1Response response = webClient1.getApi1(request.getId()).block()
我也尝试了flatmap,尽管这迫使您返回一些内容:
webClient1.getApi1(request.getId())
.flatmap(api1Response -> {
...
return Mono.empty();
});
对以上代码的任何帮助和反馈都很感激。
阻止
操作,本质上是停止和等待。它相当于Java中的future.get()。它违背了非阻塞代码的目的。FlatMap
将序列的序列扁平化为单个序列,因此列表{List{?}}将变成列表{Object}。subscribe
基本上开始侦听,并可以执行操作。通常在订阅之前什么都不会发生。
但是对于您的用例,您可以使用filter
这里有一个示例,它在{true,false}项上查看筛选器,然后对于每个为true的筛选器,我将两个mono的结果压缩在一起,然后用一个操作订阅
Flux<Boolean> bool = Flux.just(true, false);
Mono<Integer> mono1 = Mono.just(1);
Mono<String> mono2 = Mono.just("string");
bool.filter(b -> b)
.flatMap(b -> Mono.zip(mono1, mono2))
.subscribe(tuple -> System.out.println(tuple.getT1() + ", " + tuple.getT2()));
Jasmine还允许开发人员跳过一个或多个测试用例。 这些技术可以在Spec level或Suite level 。 根据应用程序的不同,此块可分别称为Skipping Spec和Skipping Suite 。 在以下示例中,我们将学习如何使用“x”字符跳过特定的Spec或Suite 。 跳过规格 我们将在语句之前使用“x”修改前面的示例。 describe('This custom match
flatMap 将 Observable 的元素转换成其他的 Observable,然后将这些 Observables 合并 flatMap 操作符将源 Observable 的每一个元素应用一个转换方法,将他们转换成 Observables。 然后将这些 Observables 的元素合并之后再发送出来。 这个操作符是非常有用的,例如,当 Observable 的元素本身拥有其他的 Observ
本文向大家介绍block、inline、inline-block的区别?相关面试题,主要包含被问及block、inline、inline-block的区别?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。 block元素可以设置width,height属性。块级元素即使设置了宽度
组件中传递的属性可以在块表达式中返回结果。 下表列出了使用块参数的不同方法 - S.No. BlockParam方式和描述 1 从具有yield的组件返回值 可以使用yield选项从组件返回值。 2 支持块和非块组件使用 您可以使用hasBlock属性支持单个组件使用块和非块组件。
我实现了一个try-catch块。 我试图用一种特定的方式实现捕捉块,但是它不太好用。如果输入不是整数,它应该重复并返回到try块。它只工作一次,但更多。 你能给我一些帮助吗?非常感谢。