精易论坛

标题: onLoad通过接口获取数据,为什么不是按执行顺序打印的 [打印本页]

作者: 285376253    时间: 2023-9-22 11:40
标题: onLoad通过接口获取数据,为什么不是按执行顺序打印的
export default {  
    data() {  
        return {  
            departmentLeaderA: ['请选择'],  
        };  
    },  

    onLoad(options) {  
        this.getData();  
        console.log(this.departmentLeaderA);  
    },  

    methods: {  
        async getData() {  
            let url = 'get/users/to/car/order';  

            const data = await wxRequest.Get(url, {  
                id: this.item.id  
            });  

            if (data.code != 404 && data.data !== undefined) {  
                for (let k in data.data) {  
                    this.departmentLeaderA[data.data[k].id] = data.data[k].name;  
                }  
            }  
            console.log(this.departmentLeaderA);  
        },  
    },  
};

打印的分别是:
["请选择", ob: Observer]
["请选择", "张三", "李四", ob: Observer]


问:为什么不是按执行顺序打印的
作者: Sin3973    时间: 2023-9-22 11:40
getData是个async异步函数,你要保证顺序执行,call这个函数时就要加个await。

```js
onLoad(options) {  
        await this.getData();  
        console.log(this.departmentLeaderA);  
    },  
```

如果不懂js的异步概念,可以搜搜掘金上一大堆讲async和await异步的帖子。
作者: Tz小雨    时间: 2023-10-6 12:59
[JavaScript] 纯文本查看 复制代码
export default {
  data() {
    return {
      departmentLeaderA: ['请选择'],
    };
  },

  async onLoad(options) {
    await this.getData();
    console.log(this.departmentLeaderA);
  },

  methods: {
    async getData() {
      let url = 'get/users/to/car/order';

      const data = await wxRequest.Get(url, {
        id: this.item.id,
      });

      if (data.code != 404 && data.data !== undefined) {
        for (let k in data.data) {
          this.departmentLeaderA[data.data[k].id] = data.data[k].name;
        }
      }
    },
  },
};


作者: 孤独艺术    时间: 2024-1-2 23:16
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者: leaqi    时间: 2025-3-5 22:56





欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4