使用ES6新特性async await进行异步处理,实现同步效果。

 在vue项目里定义了一个全局函数,如下:

 每次都返回空数组。因为接口调用后还未返回数据,该函数就将result return了。

Vue.prototype.getCity = function(){//获取城市列表
        var result = [];
        getCityList().then(res=>{
          if(res.code==0){
            //console.log(res.data);
            result = res.data;
          }else{
            result =[];
            _this.$message({
                message: res.message,
                type: 'error',
                duration:1500
            });
          }
        });
        return result
    }

 改用 async await 写法,等接口返回数据了再return。

 

 

实现代码如下:

1、给函数增加 async  await

// async await的写法
Vue.prototype.getCity = async function(){//获取城市列表
    var result = [];
    await getCityList().then(res=>{
       if(res.code==0){
          //console.log(res.data);
          result = res.data;
       }else{
          result =[];
          _this.$message({
              message: res.message,
              type: 'error',
              duration:1500
          });
       }
     });
     return result
}

 

2、页面调用时的写法:

async getCityList(){//获取城市列表
                _this.cityLoading=true;
                _this.cityArr = await _this.getCity();
                _this.cityLoading=false;
                //console.log(_this.cityArr);
            },

 

3、返回结果如下,现在不再返回空数组了:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值