angular4 http RxJS Observable observer演示

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
    })
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值