Promise与RxJS中Observable的区别

Promise与RxJS中Observable的区别

//以下是Promise的写法
	let promise = new Promise(resolve => {
		    setTimeout(() => {
		        resolve("---promise timeout---");
		    }, 2000);
		});
		promise.then(value => console.log(value));

//以下是Observable的写法
		let stream1$ = new Observable(observer => {
		    let timeout = setTimeout(() => {
		        observer.next("observable timeout");
		    }, 2000);

		    return () => {
		        clearTimeout(timeout);
		    }
		});
		let disposable = stream1$.subscribe(value => console.log(value));

		//【第一个核心不同点来了】:Observable是可以中途取消的,而Promise一旦触发就不能取消了
		setTimeout(() => {
		    disposable.unsubscribe();
		}, 1000);

		//【第二个核心不同点来了】:Observable可以持续发射很多值,而Promise只能发射一个值就结束了
		let stream2$ = new Observable<number>(observer => {
			let count = 0;
			let interval = setInterval(() => {
				observer.next(count++);
			}, 1000);

			return () => {
				clearInterval(interval);
			}
		});
		stream2$.subscribe(value => console.log("Observable>" + value));

		//【第三个核心不同点来了】:Observable提供了很多的工具函数,最最最常用的filter和map演示如下
		stream2$
			.pipe(
				filter(val => val % 2 == 0)
			)
			.subscribe(value => console.log("filter>" + value));

		stream2$
			.pipe(
				map(value => value * value)
			)
			.subscribe(value => console.log("map>" + value));

		console.log("------------------------------------------------");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值