写点什么

3 分钟温故知新 RxJS 【创建实例操作符】

作者:掘金安东尼
  • 2022 年 8 月 18 日
    广东
  • 本文字数:1663 字

    阅读完需:约 5 分钟

3 分钟温故知新 RxJS 【创建实例操作符】

RxJS 有很多神奇的东西,包括链式调用、惰性输出值、隔离数据和操作、响应式编程等等;


它是函数式编程中 monad 的一种实际应用;它是 promise 的进化形态;它是理解 JS 异步、处理异步的宝剑......


所以,借着更文的契机,日日新、月月新,学习 RxJS 接着冲~



本篇带来:observables 操作符 —— 创建实例,是基础之基础、重要之重要;


操作符为复杂的异步任务提供了一种优雅的声明式解决方案,创建实例则是方案的起步!

create

create 肯定不陌生了,使用给定的订阅函数来创建 observable ;


// RxJS v6+import { Observable } from 'rxjs';/*  创建在订阅函数中发出 '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));
复制代码

empty

empty 会给我们一个 的 observable,如果我们订阅这个 observable ,它会立即发送 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!
复制代码

from

用 from 来接收任何可列举的参数(JS 数组);


// RxJS v6+import { from } from 'rxjs';
// 将数组作为值的序列发出const arraySource = from([1, 2, 3, 4, 5]);// 输出: 1,2,3,4,5const subscribe = arraySource.subscribe(val => console.log(val));
复制代码

of

from 相似的 of,也是用于操作一个 list,按顺序发出任意数量的值;


// RxJS v6+import { of } from 'rxjs';
// 依次发出提供的任意数量的值const source = of(1, 2, 3, 4, 5);// 输出: 1,2,3,4,5const subscribe = source.subscribe(val => console.log(val));
复制代码

fromEvent

fromEvent 将事件转换成 observable 序列;


// RxJS v6+import { fromEvent } from 'rxjs';import { map } from 'rxjs/operators';
// 创建发出点击事件的 observableconst source = fromEvent(document, 'click');// 映射成给定的事件时间戳const example = source.pipe(map(event => `Event time: ${event.timeStamp}`));// 输出 (示例中的数字以运行时为准): 'Event time: 7276.390000000001'const subscribe = example.subscribe(val => console.log(val));
复制代码

fromPromise

fromPromise 创建由 promise 转换而来的 observable,并发出 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) }))
复制代码

interval

显然,interval 操作和时间有关,它基于给定时间间隔发出数字序列;


// RxJS v6+import { interval } from 'rxjs';
// 每1秒发出数字序列中的值const source = interval(1000);// 数字: 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);
复制代码

timer

timerinterval 的升级,用于给定持续时间后,再按照指定间隔时间依次发出数字。


// RxJS v6+import { timer } from 'rxjs';
/* timer 接收第二个参数,它决定了发出序列值的频率,在本例中我们在1秒发出第一个值, 然后每2秒发出序列值*/const source = timer(1000, 2000);// 输出: 0,1,2,3,4,5......const subscribe = source.subscribe(val => console.log(val));
复制代码


OK,以上便是对核心的创建实例的 Observable 操作符的介绍,温故知新、日日新(^__^)


<hr>


我是掘金安东尼,输出暴露输入,技术洞见生活,再会~ 👍👍👍

发布于: 刚刚阅读数: 2
用户头像

安东尼陪你度过漫长编程岁月~ 2022.07.14 加入

社会我瓜哥,人狠话不多😎 微信 anthony1453,加我交个朋友😎 正联合【机械工业出版社】出版《程序员成长手册》,敬请期待😎 真正的大师,永远怀着一颗学徒的心(易)😎

评论

发布
暂无评论
3 分钟温故知新 RxJS 【创建实例操作符】_前端_掘金安东尼_InfoQ写作社区