const data = [1,2,3];
data.push(4); // Array最後方加入參數:[1,2,3,4]
data.unshift(0); // Array最前方加入參數:[0,1,2,3,4]
data.pop();// 取出Array中最後一個數值: 4
data.shift();// 取出Array中最前面的一個數值: 0
startWith
及endWith
就能快速理解啦!需要複習的夥伴,可以參考tsuifei這篇好文: JS 從陣列 Array 的開頭新增元素
startWith
圖片來源-RxJS官網: startWith
endWith
圖片來源-RxJS官網: endWith
startWith
內的數值,會早於observable source
之前,以第一優先順序發送。適合用於顯示狀態,來說明
observable
已啟動訂閱。
endWith
內的數值,會在observable source
結束之後,以最後一個順序發送。適合與
takeUntil
使用,來顯示RxJS
的執行狀態已結束。
import { endWith, from, startWith } from 'rxjs';
from([1, 2, 3, 4])
.pipe(
startWith('start!'),
endWith('end...'))
.subscribe(console.log);
startWith
及endWith
在pipe
之中擺放的順序很重要,我們先來看下面這個例子:import { endWith, from, startWith } from 'rxjs';
from([1, 2, 3, 4])
.pipe(
startWith('start!'), //<-- startWith放在上面
map((d: number) => d * 10), //<-- 加入一個map處理數值
endWith('end...')
)
.subscribe(console.log);
startWith
及endWith
放在pipe
的最底部,避免發生不可預期的問題!startWith
內的數值,會早於observable source
之前,以第一優先順序發送。適合用於顯示狀態,來說明
observable
已啟動訂閱。
endWith
內的數值,會在observable source
結束之後,以最後一個順序發送。適合與
takeUntil
使用,來顯示RxJS
的執行狀態已結束。
startWith
及endWith
建議放在pipe
最後方,以免發生不可預期的現象!