vue-axios 异步的问题

发布于 2022-09-11 14:48:46 字数 970 浏览 13 评论 0

如下所示,现在想在页面加载的时候先从后台获取到数据,然后把获取到的数据给其他方法使用,并存储在sessionstorage 中。即必须先获取到这个后台返回的数据才执行后续的操作。但是目前这么写device 这个全局变量还没有获取到值就执行后边的方法。怎么让这里先获取到这个后台数据并给device 赋值后再继续执行后续方法。

 resolveDevice(){
    let self=this;
    let agentId=this.$route.params.device;
    console.log(agentId);
    let params={
        "clause":{
          "agentId":agentId
        }
    };
    return new Promise((resolve,reject)=>{
        api.getDeviceList(params).then((res)=>{
            console.log(res);
            let device=res.data.data.content[0];
            resolve(device);
        }) 
        .catch((error) => {
            reject(error);
        })
    })
},
async getDeviceInfo(){
  let self=this;
  let device=await self.resolveDevice();
  self.device=device;
  sessionStorage.setItem('device',device);
}
mounted(){
    let self=this;
    console.log(this.$route);
    this.getDeviceInfo();
    console.log(this.device);   //这个地方需要输出的应该是获取到的后台数据。
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无法言说的痛 2022-09-18 14:48:46

你都用了Promise了,看来还是对异步的东西没什么了解

懒的傷心 2022-09-18 14:48:46
async mounted() {
    let data = await this.getDeviceInfo()
}

我对异步也不怎么熟悉,但是我觉得应该是这样写。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文