JavaScript中的observables?操作符創(chuàng)建實例
操作符是 observables 背后的馬力,為復雜的異步任務提供了一種優(yōu)雅的聲明式解決方案。
本篇就帶領大家 “粗略” 過一下 observable 創(chuàng)建實例的重點 API 都有哪些?以及用代碼片段展示出用法示意~
一、創(chuàng)建實例
1.??create??
??create
?? 肯定不陌生吧?使用給定的訂閱函數(shù)來創(chuàng)建 observable ;
// RxJS v6+ import { Observable } from 'rxjs'; /* ? 創(chuàng)建在訂閱函數(shù)中發(fā)出 'Hello' 和 'World' 的 observable 。 */ const hello = Observable.create(function(observer) { ? observer.next('Hello'); ? observer.next('World'); }); // 輸出: 'Hello'...'World' const subscribe = hello.subscribe(val => console.log(val));
2.??empty??
??empty
?? 會給我們一個空的 observable,如果我們訂閱這個 observable ,它會立即發(fā)送 complete 的訊息;
var source = Rx.Observable.empty(); source.subscribe({ ? ? next: function(value) { ? ? ? ? console.log(value) ? ? }, ? ? complete: function() { ? ? ? ? console.log('complete!'); ? ? }, ? ? error: function(error) { ? ? ? ? console.log(error) ? ? } }); // complete!
3.??from??
用 ??from
?? 來接收任何可列舉的參數(shù)(JS 數(shù)組);
// RxJS v6+ import { from } from 'rxjs'; // 將數(shù)組作為值的序列發(fā)出 const arraySource = from([1, 2, 3, 4, 5]); // 輸出: 1,2,3,4,5 const subscribe = arraySource.subscribe(val => console.log(val));
4.??of??
與 ??from
?? 相似的 ??of
??,也是用于操作一個 list,按順序發(fā)出任意數(shù)量的值;
// RxJS v6+ import { of } from 'rxjs'; // 依次發(fā)出提供的任意數(shù)量的值 const source = of(1, 2, 3, 4, 5); // 輸出: 1,2,3,4,5 const subscribe = source.subscribe(val => console.log(val));
5.??fromEvent??
??fromEvent?? 將事件轉(zhuǎn)換成 observable 序列; // RxJS v6+ import { fromEvent } from 'rxjs'; import { map } from 'rxjs/operators'; // 創(chuàng)建發(fā)出點擊事件的 observable const source = fromEvent(document, 'click'); // 映射成給定的事件時間戳 const example = source.pipe(map(event => `Event time: ${event.timeStamp}`)); // 輸出 (示例中的數(shù)字以運行時為準): 'Event time: 7276.390000000001' const subscribe = example.subscribe(val => console.log(val));
6.??fromPromise??
??fromPromise
?? 創(chuàng)建由 promise 轉(zhuǎn)換而來的 observable,并發(fā)出 promise
的結果;
var source = Rx.Observable ? .fromPromise((resolve, reject) => { ? ? setTimeout(() => { ? ? ? resolve('Hello RxJS!'); ? ? },3000) ? }) // 等同于 var source = Rx.Observable ? .from(new Promise((resolve, reject) => { ? ? setTimeout(() => { ? ? ? resolve('Hello RxJS!'); ? ? },3000) ? }))
7.??interval??
顯然,??interval
?? 操作和時間有關,它基于給定時間間隔發(fā)出數(shù)字序列;
// RxJS v6+ import { interval } from 'rxjs'; // 每1秒發(fā)出數(shù)字序列中的值 const source = interval(1000); // 數(shù)字: 0,1,2,3,4,5.... const subscribe = source.subscribe(val => console.log(val)); // import { interval } from 'rxjs'; // const source = interval(1000); // 等同于 // var source = Rx.Observable.interval(1000);
8.??timer??
??timer
?? 是 ??interval
?? 的升級,用于給定持續(xù)時間后,再按照指定間隔時間依次發(fā)出數(shù)字。
// RxJS v6+ import { timer } from 'rxjs'; /* ? timer 接收第二個參數(shù),它決定了發(fā)出序列值的頻率,在本例中我們在1秒發(fā)出第一個值, ? 然后每2秒發(fā)出序列值 */ const source = timer(1000, 2000); // 輸出: 0,1,2,3,4,5...... const subscribe = source.subscribe(val => console.log(val));
到此這篇關于JavaScript中的observables 操作符創(chuàng)建實例的文章就介紹到這了,更多相關observables 操作符創(chuàng)建實例內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JavaScript標準對象_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了JavaScript標準對象的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06javascript 解決表單仍然提交即使監(jiān)聽處理函數(shù)返回false
解決表單依舊提交即使監(jiān)聽處理函數(shù)返回false2010-03-03JavaScript實現(xiàn)解析INI文件內(nèi)容的方法
這篇文章主要介紹了JavaScript實現(xiàn)解析INI文件內(nèi)容的方法,結合實例形式分析了javascript通過自定義函數(shù)實現(xiàn)針對ini文件解析操作的相關處理技巧,需要的朋友可以參考下2016-11-11bootstrap和jQuery.Gantt的css沖突 如何解決
這篇文章主要介紹了bootstrap和jQuery.Gantt的css沖突,本文給出了解決沖突的解決方法,感興趣的小伙伴們可以參考一下2016-05-05mock.js模擬數(shù)據(jù)實現(xiàn)前后端分離
這篇文章主要為大家詳細介紹了mock.js模擬數(shù)據(jù)實現(xiàn)前后端分離,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07