JS-异步
- 回调函数
- Promise
- 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);
})