PIPE的用途不多说,主要记录一下相关的Operators
pipe含有的100多种Operator
Observable.pipe(
map(x => x + 1)
).subscribe(
next => {
console.log('value=', value);
});
interval 每秒发出自增数字
import { interval } from 'rxjs';
// 每1秒发出数字序列中的值
const source = interval(1000);
of 发出数字序列
import { of } from 'rxjs';
// 依次发出提供的任意数量的值
const source = of(1, 2, 3, 4, 5);
range 发出1-10的区间值
import { range } from 'rxjs';
// 依次发出1-10
const source = range(1, 10);
// 输出: 1,2,3,4,5,6,7,8,9,10
const example = source.subscribe(val => console.log(val));
create 发出多个值的 observable
const hello = Observable.create(function(observer) {
observer.next('Hello');
observer.next('World');
});
// 输出: 'Hello'...'World'
const subscribe = hello.subscribe(val => console.log(val));
将数组、promise 或迭代器转换成 observable 。
💡 对于数组和迭代器,所有包含的值都会被作为序列发出!
💡 此操作符也可以用来将字符串作为字符的序列发出!
const arraySource = from([1, 2, 3, 4, 5]);
// 输出: 1,2,3,4,5
const subscribe = arraySource.subscribe(val => console.log(val));
// 发出 promise 的结果
const promiseSource = from(new Promise(resolve => resolve('Hello World!')));
// 输出: 'Hello World'
const subscribe = promiseSource.subscribe(val => console.log(val));
filter 过滤出偶数
import { from } from 'rxjs';
import { filter } from 'rxjs/operators';
// 发出 (1,2,3,4,5)
const source = from([1, 2, 3, 4, 5]);
// 过滤掉奇数
const example = source.pipe(filter(num => num % 2 === 0));
// 输出: "Even number: 2", "Even number: 4"
const subscribe = example.subscribe(val => console.log(`Even number: ${val}`));
concatAll
处理完前一个Observable才会再处理下一个Observable。依次按顺序执行一个个observable。如上面4秒后拿concat0,第5秒concat1,第6秒concat2;第10秒后concat0,第11秒concat1,第12秒concat2
mergeAll
能够同时并行处理所有的Observable,如上会根据两次点后各个Observable输出时间依次输出对应数据,像是几个接口请求一样,不管你是何是发出的,只管谁最先请求到数据,谁就先输出对应该数据,就这样依次输出直最后一个请求成功输出最后数据
switchAll
新的Observable输出后直接处理新的observable,不管前一个Observable是否完成,只要有新的Observable送出就会直接把旧的Observable退订(unsubscribe),永远只处理最新的Observable。如上面连点两次,第一次点击Observable要4秒后才输出出来,此时第二次点击早就有了新的Observable,所有会取消第一次订阅,只4秒后输出第二点击的数据
-
zip- love birds ,始终作为一个团队工作,仅在所有可观测值返回新值时触发 CombineLatest - go dutch
-
一旦所有可观察到的值都返回新值,就开始触发,然后等不及,每次当任一可观察到的值都返回新值时触发。
-
withLatestFrom- master slave ,主服务器首先等待从服务器,此后,仅当主服务器返回新值时,才会触发操作。
-
forkJoin- final destination ,当所有可观测值完成时触发一次。
具体得生动得讲解 https://blog.csdn.net/culiu9261/article/details/107542887