Angular的post和get请求返回的都是Observable,将Observable转变为promise即可实现异步变同步,上代码
// 引入rxjs
import { Observable } from 'rxjs';
//存在异步的方法,在方法名前加async
async getLogTest(){
let param = {
**: **,
ajaxFlag: true
};
let obsevable: Observable<Object> = this.Service.getLog(param); //发送请求部分
let res: any = await obsevable.toPromise(); //核心部分,添加await表示等待结果返回,将obsevable转为Promise
console.log("getLog1");
if (res.success) {
** //要执行的代码
**
}
else{
** //要执行的代码
**
}
console.log("getLog2");
}
getLog(param) { //发送请求
return this.http.post(`${Url}`, params);
}
//同步部分
async ngOnInit() { //方法前同样加async
console.log("顺序执行1")
await this.getLogTest(); //异步方法前加await
console.log("顺序执行2")
}
日志打印结果
顺序执行1
getLog1
getLog2
顺序执行2