第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從反應堆核心中的 Mono<String> 中提取字符串

如何從反應堆核心中的 Mono<String> 中提取字符串

一只斗牛犬 2023-05-17 16:02:01
我Mono<String>在反應器中有一個對象。我怎樣才能從這個對象中得到一個字符串值?我知道我可以做類似下面的事情:因為Mono<String> userName,我可以,userName.map(System.out::println).但這將直接打印值。我想將這個字符串值存儲到另一個變量中,以便我可以將該變量傳遞給其他一些函數。我怎樣才能提取這個值?
查看完整描述

2 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

要以最簡單的形式直接回答問題,您可以使用Mono.block().

但你幾乎肯定不應該,因為這會阻塞線程,首先破壞了使用反應堆的意義。相反,您應該調用subscribe()并提供消費者。當發(fā)出一個值時,消費者將被異步調用Mono,該值作為參數。

當然,沒有什么本質上可以阻止您將值分配給一個字段:

mono.subscribe(v?->?this.value?=?v);

...但這在實踐中的用處非常有限,因為您不知道該字段何時會被初始化。

正常的方法是一次性調用訂閱者中的其他方法:

mono.subscribe(v?->?{
????oneMethodThatNeedsTheValue(v);
????anotherMethodThatNeedsTheValue(v);
});

...或使用Mono.cache()并傳遞它:

class Test {


? ? void useMonoVal(Mono<String> mono) {

? ? ? ? mono.subscribe(s -> System.out.println("I need to see " + s));

? ? }


? ? void anotherMethod(Mono<String> mono) {

? ? ? ? mono.subscribe(s -> System.out.println("I need to talk to " + s));

? ? }


? ? public static void main(String[] args) {

? ? ? ? Mono myMono = Mono.just("Bob").cache();

? ? ? ? Test t = new Test();

? ? ? ? t.useMonoVal(myMono);

? ? ? ? t.anotherMethod(myMono);

? ? }


}

(該cache()方法確保Mono只評估一次,然后為所有未來的訂閱者緩存,這在使用just()工廠時當然是無關緊要的,但只是為了一個完整的例子。)


擴展一下,使用反應式范式(因此反應器,并通過擴展它Mono和Flux對象)的全部意義在于它使您能夠以非阻塞方式進行編碼,這意味著當前的執(zhí)行線程不會“被阻止” " 等待單聲道發(fā)出一個值。


旁注:我不確定它是否與問題直接相關,但你不能這樣做a.map(System.out::println);- 你可能是說a.subscribe(System.out::println);.


查看完整回答
反對 回復 2023-05-17
?
森林海

TA貢獻2011條經驗 獲得超2個贊

在從單聲道對象獲取字符串之前,您必須訂閱

public class MonoT {

? ? ? ? static String x = null;

? ? ? ? public static void main(String[] args) {

? ? ? ? ? ? // TODO Auto-generated method stub

? ? ? ? ? ? Mono<String> username = Mono.just("Naren");

? ? ? ? ? ??

? ? ? ? ? ? username.subscribe(v->{

? ? ? ? ? ? ? ? x = v;

? ? ? ? ? ? });?

? ? ? ? ? ??

? ? ? ? ? ? System.out.println(x);

? ? ? ? }

? ??

? ? }


查看完整回答
反對 回復 2023-05-17
  • 2 回答
  • 0 關注
  • 463 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號