Angular2记录

对象转Observable

import 'rxjs/add/observable/of'

Observable.of(1,2,3)

http请求后做处理

import {map, catchError} from 'rxjs/operators'

    this.http.get(url).pipe(
        map(res => {
          //do something
          localStorage.setItem('xxxx', JSON.stringify(res))
          //return
          return res
        }),
        catchError(err => {
          return Observable.throw(err);
        })
      )

同步多个http请求

    let http1 = this.http.get('url')
    let http2 = this.http.get('url')
    let http3 = this.http.get('url')
import 'rxjs/add/observable/forkJoin';
import 'rxjs/add/observable/merge';
import 'rxjs/add/observable/zip'
    Observable.forkJoin(http1, http2, http3).subscribe((res) => {
      //执行一次,多个对象
      console.log(res)
    })
    Observable.zip(http1, http2, http3).subscribe(([res1, res2, res3]) => {
      //执行一次,对象分开
      console.log(res1)
      console.log(res2)
      console.log(res3)
    })

    Observable.zip(http1, http2, http3).subscribe((res) => {
      //执行一次,多个对象
      console.log(res)
    })
    Observable.merge(http1, http2, http3).subscribe((res) => {
      //执行多次,每次一个对象
      console.log(res)
    })

异步操作中返回Observable

import {Subject} from 'rxjs/Subject';

chooseImage(): Observable<any> {
    let subject = new Subject();
    wx.chooseImage({
      count: 1, // 默认9
      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
      success: function (res) {
        let localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
        subject.next(localIds)
      }
    });
    return subject.asObservable()
  }

微信浏览器中上传图片之后不触发图片的load事件

需要在改变改变图片的src,或者是新增img,或者是新增div(背景)之后,通过调用如下方法重新检测:

import {ChangeDetectorRef} from '@angular/core';

constructor(private cd: ChangeDetectorRef) {}

this.cd.detectChanges()

猜你喜欢

转载自my.oschina.net/eima/blog/1797481