在Mono上我們傳入id,並產生一個publisher對傳入的id查詢db並且轉成bo object,做對外api的發送。
在Flux範例也是做差不多的事情,差別在Flux flow是整個查詢並逐一處理。
在這個範例中我們稱為貪婪式的取值的原因是,
如果我們沒有下subscribe,他依然會先創建just內所需要觀察的物件。
這個時候其實不會是非同步的,一定得just內部創建完才會傳出。
有時候我們不會馬上在method中下subscribe,而是交由外部呼叫的使用者訂閱,但這時候Flow創建時已經貪婪處理了,可能會造成資料的即時性。
Defer就是來惰性取值的幫手
以下我們直接看 defer operator 範例
這個範例只是將just改成defer,我們將Mono與Flux的訂閱時間交由外部呼叫的使用者來決定。
魔力在於這個範例的getDataFromRepository與getAllDatas都是使用者訂閱時才開始惰性處理,這樣才可以拿到當下使用者訂閱時更即時的資料。