每当我需要在反应链中传递数据时,我都会做如下操作:
public Mono<String> doFooAndPassDtoAsMono(Dto dto) {
return Mono.just(dto)
.flatMap(dtoMono -> {
Mono<String> result = // remote call returning a Mono
return Mono.zip(Mono.just(dtoMono), result);
})
.flatMap(tup2 -> {
return doSomething(tup2.getT1().getFoo(), tup2.getT2()); // do something that requires foo and result and returns a Mono
});
}
给定以下示例Dto类:
class Dto {
private String foo;
public String getFoo() {
return this.foo;
}
}
因为一直压缩数据以将其传递到链中(特别是向下几级)通常会变得很乏味,我想知道直接引用dto
是否可以这样做:
public Mono<String> doFooAndReferenceParam(Dto dto) {
Mono<String> result = // remote call returning a Mono
return result.flatMap(result -> {
return doSomething(dto.getFoo(), result); // do something that requires foo and result and returns a Mono
});
}
我对第二种方法的担忧是,假设订阅者在线程池上订阅了这个Mono,我需要保证Dto是线程安全的吗(上面的例子很简单,因为它只携带一个String
,但是如果不是呢)?
另外,哪一个被认为是“最佳实践”?
案子很简单如果
然后,您可以简单地引用参数或局部变量中的引用数据——就像在您的第二个解决方案中一样。这完全没问题,也没有并发问题。
强烈反对在反应流中使用可变数据。如果您有一个可变的Dto
类,您可能仍然能够使用它(假设正确的同步),但这对于您的代码读者来说将是非常令人惊讶的。
根据您共享的内容,您可以简单地执行以下操作:
public Mono<String> doFooAndPassDtoAsMono(Dto dto) {
return Mono.just(dto.getFoo());
}
您在第一个选项中使用zip的方式并不能解决任何目的。同样,第二个选项也不起作用,因为一旦单声道是空的,下一个平面地图就不会被触发。
问题内容: 我一直试图获得一个快速应用程序,以流形式发送响应。 当我将“ rs.pipe(res)”替换为“ rs.pipe(process.stdout)”时,它会在控制台中打印,但是如何使其在快速应用程序中工作。 问题答案: 您不需要可读的流实例,只需使用: 之所以可行,是因为在Express中,它基于Node自己的,因此它继承了其所有方法(如)。
我在问之前找了很多,但似乎找不到一个适合我的解决方案。 我有一个函数,我需要在状态设置为新值后调用。 即使该函数是作为setState回调调用的,它仍然获得旧值。
顺便说一下,在使用/而不是发射器时,我遇到了同样的问题。我已经决定给你们举这个例子,因为它很容易理解和再现。
悬而未决...
我试图在mapbox gl地图上设置一个标记,点击地图,然后将lngLat对象传递回父组件。请告诉我怎样才能做到这一点。我刚开始学习反应,但我知道道具只能从父类继承,setState只能设置本地状态。 父组件如下所示 我正在学习这个教程https://github.com/laneysmith/react-mapbox-example
本文向大家介绍如何在PowerShell函数中传递参数?,包括了如何在PowerShell函数中传递参数?的使用技巧和注意事项,需要的朋友参考一下 您可以在PowerShell函数中传递参数,并且要捕获这些参数,需要使用参数。通常,当您在函数外部使用变量时,您实际上不需要传递参数,因为变量本身是Public,可以在函数内部访问。但是在某些情况下,我们需要将参数传递给函数,下面的示例说明了如何编写该