欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

走进rxjs的世界 - 万物皆流 - Everything is a stream

发布时间:2023/12/19 编程问答 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 走进rxjs的世界 - 万物皆流 - Everything is a stream 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一些使用案例

  • 轻易实现让服务器retry客户端发起的HTTP调用:
  • return this.http.get('/api/v1/tasks.json').retry(5).map( res => res.json());...
  • 每隔10秒钟,轮询一次
  • pollTasks() {return Observable.interval(10000).flatMapLatest(() => http.get('/api/v1/tasks.json')).map(res => res.json())}// caller can do subscription and store it as a handle:let tasksSubscription =pollTasks().subscribe( data => this.payload = data);// turn it off at a later timetasksSubscription.unsubscribe();

    the pollTasks() method emits a call every 10 seconds, which triggers the call inside of flatMapLatest – we’re basically ignoring the result of that event, and using it to trigger the http.get method to fetch our data. We’ll map it into JSON each time.

    pollTasks方法返回一个Observable对象,封装了一个10秒间隔的周期性调用,调用内部会执行http操作读取tasks.json文件,将结果以json格式返回。

    The caller of our pollTasks() method just gets an observable, which is emitting content every 10 seconds.

    调用pollTasks方法,只会返回一个Observable对象,这个Observable对象subscribe之后,会每隔10秒产生内容。调用unsubscribe关闭。

    Also the flatMapLatest call is really interesting – any calls generated by previous events are canceled, including their in-flight HTTP method calls. Try doing that with a promise!

    flagMapLatest是一个强力方法,这里将其当作一种engine使用:所有基于之前发生的事件触发的调用都会自动被cancel,包括正在进行中的in-flight HTTP调用。很难想象使用promise实现类似的方法,会花费多大的工作量。

    参考文献

    总结

    以上是生活随笔为你收集整理的走进rxjs的世界 - 万物皆流 - Everything is a stream的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。