今天有这样一个需求,通过省份编码请求接口获取城市列表,我把http请求数据写在getCiteByNum方法里,把请求的数据return了,但是调用方法接收数据为undefined。
代码如下:
由于接口请求数据是异步操作,方法调用接收值会出现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的情况了。
报了加班餐,吃完再肥家吧~