流程:
1.建立noticesevice服務,內部有乙個subject時間發射器subject;
2.send(...)為傳送資料,實際就是乙個事件;
3.get(...)為獲取observable物件,但是此時沒有訂閱者,那麼就沒有訂閱者可通知;
4.a元件把noticesevice服務類新增進來,然後在啟動的時候啟用這個send(...)事件;
5.b元件內在啟動的時候通過get(...).subscribe(...)訂閱這個send(...)事件;
6.subscribe()內部的引數是observer物件,result為event,其實是event.target.value;
7.事件流程為:a元件觸發send()-->b元件訂閱者被通知,message的值被改變。
相當於乙個事件發射器,是唯一能夠向多個observer廣播值的唯一手段。
例項:1.noticesevice服務
import from '@angular/core';
import from "rxjs";
import from 'rxjs/observable';
@injectable()
export classs noticeservice
private subject :replaysubject=new replaysubject();
// 需要傳送的資訊
public send(message:any):void
//需要接收的資訊
public get():observable
}
2.a元件中傳送
constructor()
ngoninit())
}
3.b元件中接收
constructor()
ngoninit())
} //在接收的過程中可能會報錯,要加上定時器
this.customer.get().subscribe((res)=>)
})}
訂閱者模式(觀察者模式)
include include include struct notification virtual void process 0 class subscribera public notification class subscriberb public notification class p...
觀察者模式和訂閱者模式
1 要有個存放訂閱的事件佇列 2 通過on去訂閱事件 3 emit去觸發事件 const fs require fs node的自帶模組 const path require path const resolve file console.log resolve age.txt let evento...
觀察者模式(訂閱模式)
定義物件間一種一對多的關係,使得每當乙個物件改變狀態,則所有依賴他的物件都會得到通知並被自動更新。使用場景 1 某些時候需要一些物件有所關聯,而且這種關聯是可以拆分而不是組合在一起的。2 某一事件發生,需要向多方觸發。3 訊息交換,如訊息佇列 事件匯流排的處理機制。1 subject 抽象主題,被觀...