Angular async、await、toPromise 实现异步变同步

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值