加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular4 http RxJS Observable observer演示

发布时间:2020-12-17 09:07:05 所属栏目:安全 来源:网络整理
导读:angular4 http RxJS Observable observer Observable 可观察对象(观察者们),Observer 观察者; Observable就像快递公司,Observer是快递小哥,那生产者,消费者呢? 他们直接喊快递公司就行啦 首先学会 Http 类的用法 组件中 引入 Http // 引入模块import { Http

angular4 http RxJS Observable observer

Observable 可观察对象(观察者们),Observer 观察者;

Observable就像快递公司,Observer是快递小哥,那生产者,消费者呢? 他们直接喊快递公司就行啦

首先学会 Http 类的用法

  1. 组件中 引入 Http

// 引入模块
import { Http } from "@angular/http";
// 注入
@Injectable()
export class ApiService {
  constructor(public http: Http){}
  1. 使用方法,通过 angular http 返回的就是一个 Observable

this.http
      //map 操作符返回一个新的 Observable 对象
      .map((r,err) => { return r })
      //filter 操作符执行过滤操作,然后又返回一个新的 Observable 对象
      .filter(r => r.length >= 2)
      // 抖动时间
      .debounceTime(1000)
      //subscribe 操作符,启动订阅
      .subscribe( //订阅
        r => {
          // r 接收订阅成功后返回的数据
        },err => {
          // 错误时的数据
        })
      // 错误处理
      .catch(err=>{})

好吧,这个我知道,怎么自己创建一个呢?

// 创建一个观察者
const myserver = (observer) => {
  // 返回数据
  observer.next('data')
  // 返回错误
  observer.error()
  // 结束
  observer.complete()
  // 关闭
  observer.closed()
}

// 建立可观察对象 Observable
const obs = new Observable(myserver)
// 订阅
obs.subscribe(r =>{ console.log(r)})

下面的 myhttp 函数演示了从一个 Get 请求获取 json 并缓存下来的例子,

let mydata
myhttp(): Observable<any> {
  if (mydata) {
    // 将缓存的数据 mydata 以 Observable 返回
    return new Observable((server: Observer<any>) => {
      server.next(mydata)
      server.complete()
    })
  } else {
    // 通过 Angular Http 获取数据
    return this.http.get('data.json')
    .map(r => {
      // 写入本地 mydata
      mydata = r
      return r
    })
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读