加载中

JS-异步

  1. 回调函数
  2. Promise
  3. RXJS

例子使用angular框架,创建了一个服务一个组件

服务

// promise 是 es6 新功能,不用导入第三方包
// rxjs是angular自带类,所以直接导入
import { Observable } from 'rxjs';

public getCallbackType(cb): void {
  setTimeout(() => {
    let type: string = "data by callback";
    cb(type);
  },1000)
}

public getPromiseType(): any {
  // resolve 成功,reject 异常
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      let type: string = "data by promise";
      resolve(type);
    },1000)
  })
}

public getRxjsType(): any {
  // observer.next 成功,observer.error 异常
  return new Observable((observer) => {
    setTimeout(() => {
      let type: string = "data by rxjs";
      observer.next(type);
    },1000)
  })
}

组件

this.typeService.getCallbackType((data) => {
  console.log(data);
});

this.typeService.getPromiseType().then((data) => {
  console.log(data);
})

this.typeService.getRxjsType().subscribe((value) => {
  console.log(value);
})
posted @ 2020-02-02 15:09  jialeYang  阅读(44)  评论(0编辑  收藏  举报