Angular请求同步async、await、toPromise使用方式

最近项目中遇到一个问题,需要angular发送多个同步请求,解决方案如下:

import { Component } from '@angular/core';
import { HttpClient } from "@angular/common/http";
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  title = 'app';
  constructor(private client:HttpClient){
    this.initData().then(data => {
      console.log(data);
      console.log('constructor 执行完成')
    });
  }
  async initData(){
    let data = await this.getData();
    console.log(data);
    console.log('initData 执行完成');
    return data;
  }
   getData(){
    let url = 'https://tieba.baidu.com/hottopic/browse/topicList';
    let data = this.client.get(url).toPromise();
    console.log(data);
    console.log('getData 执行完成');
    return data;
  }
}

console.log顺序:

1、getData 执行完成
2、initData 执行完成
3、constructor 执行完成

说明:

1、调用的最外层函数中使用 async 修饰;
2、在方法体中,使用 await 修饰要发送的同步请求;
3、getData 方法是为了返回同步请求的res。toPromise,将res转成Promise对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。