Open puddlejumper26 opened 3 years ago
const source$ = new Observable(subscriber => { console.log('stream 開始'); subscriber.next(1); subscriber.next(2); subscriber.next(3); subscriber.next(4); console.log('steam 結束'); subscriber.complete(); }); source$.subscribe(data => console.log(`Observable 第一次訂閱: ${data}`)); // 1, 2, 3, 4 source$.subscribe(data => console.log(`Observable 第二次訂閱: ${data}`)); // 1, 2, 3, 4
Subject 系列產生出來的資料流都是屬於 Hot Observable
从创建后就开始发射数据,不考虑是否有订阅者订阅
一條隨時可能有資料流過的線路,每次訂閱都只是等待這條水管線路傳送資料過來而已
隨時依照不同情境在程式內讓新的事件發生 (只要呼叫 next() 就好)
next()
这里可以把subject理解为一个水管,一直是开放的状态,但是没有数据传输,需要next进行数据传输
下面的this.subject.subscribe()就建立了一条新的水管,next()的使用相当于是开始发送数据,因此只要是在这个next下面建立的水管就无法接收到之前next()发送的数据
publish
replay
multicast
Cold Observable
Hot Observable
Subject 系列產生出來的資料流都是屬於 Hot Observable
从创建后就开始发射数据,不考虑是否有订阅者订阅
一條隨時可能有資料流過的線路,每次訂閱都只是等待這條水管線路傳送資料過來而已
隨時依照不同情境在程式內讓新的事件發生 (只要呼叫
next()
就好)这里可以把subject理解为一个水管,一直是开放的状态,但是没有数据传输,需要next进行数据传输
下面的this.subject.subscribe()就建立了一条新的水管,next()的使用相当于是开始发送数据,因此只要是在这个next下面建立的水管就无法接收到之前next()发送的数据
Cold Observable 和 Hot Observable 之间的相互转换
publish
、replay
、multicast
操作符可以将 Cold Observable 转换成 Hot Observable 。Source