rxjs教程指路
中文手冊
個人理解:非同步程式設計,類promise
,功能比promise
更強大
function
getcallbackdata
(callback)
,1000);
}getcallbackdata
((data)
=>
)
function
getpromisedata()
,2000)}
)}getpromisedata()
.then
((data)
=>
)
function
getrxjsdata()
,3000)}
)}getrxjsdata()
.subscribe
((data)
=>
)
從上面可以看出,rxjs與promise的語法非常相似,rsxj使用的物件是observable,獲取資料使用的關鍵字是subscribe(訂閱)
什麼叫優勢,你能做的我能做,做的好不好暫且不談,但是我能做的你做不了,這就是優勢了
promise建立之後,動作是無法撤回的。observable不一樣,動作可以通過unsbscribe()方法中途撤回,而且observable在內部做了智慧型的處理。舉例如下
function
getrxjsdata()
,3000)}
)}const res =
getrxjsdata()
.subscribe
((data)
=>
)settimeout((
)=>
,1000
)// 不會列印輸出結果
如果我們想讓非同步裡面的方法多次執行,比如下面這段**
function
getintervalpromisedata()
,2000)}
)}getintervalpromisedata()
.then
((data)
=>
)
結果promsie
中的資料只能列印一次,而observable
不一樣,它可以不斷地觸發下乙個值,就像next()
這個方法的名字所暗示的那樣。
function
getintervalrxjsdata()
,1000)}
)}getintervalrxjsdata()
.subscribe
((data)
=>
)//列印結果
// intervaldata-rxjs1
// intervaldata-rxjs2
// intervaldata-rxjs3
// ······
在angular
中使用rxjs的相關工具函式需要引入相關的模組
import
from
'rxjs/operators'
function
getintervalrxjsnum()
,1000)}
)}getintervalrxjsnum()
.pipe
(filter
((value: number)
=>))
.subscribe
((data)
=>
)// 列印結果
// 2
// 4
// 6
// ···
filter
的作用是過濾訂閱的資料,上例中,只獲取偶數
getintervalrxjsnum()
.pipe
(map
((value: number)
=>))
.subscribe
((data)
=>
)// 列印結果
// 1
// 4
// 9
// ···
與js中陣列方法map
類似,可以對資料進行修改
getintervalrxjsnum()
.pipe
(filter
((value: number)
=>),
map(
(value: number)
=>))
.subscribe
((data)
=>
)// 列印結果
// 4
// 16
// 36
// ···
工具函式都是在pipe
管道中使用的,有點類似angular
中的模板語法 時間複雜度的計算(入門版)
定義 在電腦科學中,時間複雜性,又稱時間複雜度,演算法的時間複雜度是乙個函式,它定性描述該演算法的執行時間。這是乙個代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。使用這種方式時,時間複雜度可被稱為是漸近的,亦即考察輸入值大小趨近無窮時的情況。我們都...
Golang入門學習 Slice的初步使用
go 語言切片是對陣列的抽象。go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,go中提供了一種靈活,功能強悍的內建型別切片 動態陣列 與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大 切片是一種方便 靈活且強大的包裝器。切片本身沒有任何資料。它們只是對現有陣列的...
Golang語言入門 陣列(Array)的初步使用
1.1 什麼是陣列 go 語言提供了陣列型別的資料結構。陣列是具有相同唯一型別的一組已編號且長度固定的資料項序列,這種型別可以是任意的原始型別例如整形 字串或者自定義型別。陣列元素可以通過索引 位置 來讀取 或者修改 索引從0開始,第乙個元素索引為 0,第二個索引為 1,以此類推。陣列的下標取值範圍...