解决vue中axios同步的问题

export  function getDicsList(){
  var result ={};
  Axios.get('../../static/getdicsList.json').then((res)=>{
    result =res;
  })
  return result;
}

如果有类似上面的需求,我要在请求完成后,对数据进行赋值,然后在后面的语句中要操作数据,比如返回它。如果是同步机制,那么最后我可以成功返回result的值,但是axios是异步的。并且axios不像jq的ajax提供async属性,设置 false就可以。

 

但是es6 的promise 逐步解决了层层回调的问题,es8的async await让异步变成了同步的写法。

可以将上面写法写成

  export async function getDicsList(){
    var result =await Axios.get('../../static/getdicsList.json');
    return result;
}

这个时候 ,result就是我要获取得值。需要注意的是,返回的仍然是promise

posted @ 2019-08-08 09:39  zhupan  阅读(14804)  评论(1编辑  收藏  举报