async await promise处理异步

今天有这样一个需求,通过省份编码请求接口获取城市列表,我把http请求数据写在getCiteByNum方法里,把请求的数据return了,但是调用方法接收数据为undefined。

代码如下:


505行代码


getCityByNum方法

由于接口请求数据是异步操作,方法调用接收值会出现undefined情况,所以要解决这个疑难杂症。

贴出正确处理的代码:

//接收方法调用的最终值

this.initData(this.portACode).then(result => {

        console.log(result); // 3、最后输出

        this.portACityList = result;

  });

//通过async await处理请求接口返回的数据

  async initData(code) {

    const data = await this.getCiteByNum(code);

    console.log(data); // 2、然后输出

    return data.data;

  }

//请求接口使用promise

  getCiteByNum (code) {

    const requestData = this.https._get(`${this.urlShparm}/query/city?provinceId=${code}`).toPromise();

    console.log(requestData);     // 1、最先输出

    return requestData;

  }

代码执行顺序如下:


经过改造,代码可以进一步优化


这样拿到的this.portACityList就不会出现undefined的情况了。

报了加班餐,吃完再肥家吧~

你可能感兴趣的:(async await promise处理异步)