美文网首页
30 天精通 RxJS (05) - 代码升级V6

30 天精通 RxJS (05) - 代码升级V6

作者: 四环霉素 | 来源:发表于2019-09-29 16:10 被阅读0次

由于原贴02-04主要介绍的是函数式编程,观察者模式,迭代器模式。其相关的代码和RxJS版本关系不大。所以02-04这几篇文章的代码就不再做升级处理。
05的新建Observale的代码已经有所改动。
如上一篇所述,所有的代码升级为了方便,都是基于Create-Reat-App新建的项目,再基于React 16.8的Hooks写的。

import React, { useEffect } from 'react';
import { Observable } from 'rxjs';

function App() {
  useEffect(() => {
    console.log('rx.js');
    const observableInstance = new Observable(subscriber => {
      subscriber.next('Jerry');
      subscriber.next('Anna');
      setTimeout(()=>subscriber.next('RxJs 30 days'),30);
    });
    console.log('start');
    observableInstance.subscribe(e => console.log(e));
    console.log('end');
  }, [])

  return (
    <div className="App">
      <h1>Rx.Js</h1>
    </div>
  );
}

export default App;

再一个相关的代码升级是在observer里面接收exception,单独新建observer的代码我这边略去了,我们直接在subscribe方法里面传多个函数参数的方式让RxJS自己拼装成observer。

//import 和 export代码和上一段代码一样,这边就不重复写了
useEffect(() => {
    console.log('rx.js');
    const observableInstance = new Observable(subscriber => {
      try {
        subscriber.next('Jerry');
        subscriber.next('Anna');
        throw 'some exception';
      } catch (e) {
        subscriber.error(e);
      }
    });
    console.log('start');
    observableInstance.subscribe(v => console.log(v), e => console.error(e));
    console.log('end');
  }, [])

在chrome控制台看到的结果如下:


image.png

相关文章

网友评论

      本文标题:30 天精通 RxJS (05) - 代码升级V6

      本文链接:https://www.haomeiwen.com/subject/dwddyctx.html