假如我们在Vue的勾子函数里created放了2个回调函数

 created() {this.initLinkGruopList()this.getList()},// 第一次获取链接分类列表数据initLinkGruopList() {this.urlmethod(this.url.linkManage.clasList_link, null).then(res => {this.linkGroupData = [...res.data]this.rootLinkId = this.activeLinkId = res.data[0].idthis.activeLinkName = res.data[0].namefor (let i = 0; i < 100000; i++) {console.log(i)if (i == 100000 - 1) {alert('over')}}}).catch(err => {console.log('err', err)})},getList() {this.loading = trueconst reqPara = {data: {pageIndex: this.pagination.currentPage,pageSize: this.pagination.pageSize,clasId: this.activeLinkId}}//   const response = await this.getLinkGruopList()this.urlmethod(this.url.linkManage.list_link, reqPara).then(res => {this.data = [...res.data.list]this.data.forEach(item => {this.linkGroupData.forEach(element => {if (item.clasId === element.id) {item.clasName = element.name}})})this.pagination.total = res.data.recordTotalthis.loading = false}).catch(err => {console.log('err', err)this.loading = false})},

熟悉执行栈 回调函数 和异步的同学(不熟悉的可以看我前期博客,有专门讲这一块),会知道上面例子的执行顺序,先执行initLinkGruopList(),因为这个函数是用了axios异步请求,所以返回给主线程一个回调标记,第二个getList开始执行,第二个也是返回给主线程一个回调标记,这时主线程没有了任务队列,于是看这两个回调函数哪个跑的快,就先执行哪个。

问题来了,假如我只想第一个先执行,等拿到了它的结果,再执行第二个呢?

 async created() {await this.initLinkGruopList()this.getList()},// 第一次获取链接分类列表数据initLinkGruopList() {return new Promise((resolve, reject) => {this.urlmethod(this.url.linkManage.clasList_link, null).then(res => {this.linkGroupData = [...res.data]this.rootLinkId = this.activeLinkId = res.data[0].idthis.activeLinkName = res.data[0].namefor (let i = 0; i < 100000; i++) {console.log(i)if (i == 100000 - 1) {resolve()}}}).catch(err => {console.log('err', err)})})},async getList() {this.loading = trueconst reqPara = {data: {pageIndex: this.pagination.currentPage,pageSize: this.pagination.pageSize,clasId: this.activeLinkId}}//   const response = await this.getLinkGruopList()this.urlmethod(this.url.linkManage.list_link, reqPara).then(res => {this.data = [...res.data.list]this.data.forEach(item => {this.linkGroupData.forEach(element => {if (item.clasId === element.id) {item.clasName = element.name}})})this.pagination.total = res.data.recordTotalthis.loading = false}).catch(err => {console.log('err', err)this.loading = false})

用async/await+promise就搞定啦,为了效果区别明显,我故意for里循环了100000次。

Vue created() 里同步相关推荐

  1. Vue实例里this的使用

    2019独角兽企业重金招聘Python工程师标准>>> 要理解Vue实例里this的使用,首先要理解this在JavaScript里的用法,可以参考理解JavaScript普通函数以 ...

  2. created不能异步_mpvue里created里异步请求结果,如何在beforeMount里获取到呢

    问题描述 用mpvue做小程序时,要在首页展示轮播图之前获取到token,openId,并在请求获取轮播图时候在header里传进去,后面所有接口都需要这两个头部信息.我想在created里获取到这两 ...

  3. Vue created/mounted 异步获取不到data中的数据

    最近在开发时遇到了个小坑,在没详细了解Vue的生命周期前,总以为mounted函数一定会在created函数完成后执行,但实则不然. 如果呈现在页面上的数据是静态的,比如说像下面这样数据是写死不变化的 ...

  4. jq的插件 vue中引用_详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件

    本篇文章主要介绍了详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件,具有一定的参考价值,有兴趣的可以了解一下 使用vue-cli构建的vue项目,webpack的配置文 ...

  5. [vue] vue组件里的定时器要怎么销毁?

    [vue] vue组件里的定时器要怎么销毁? const timer = setInterval(() =>{ // 某些定时器操作 }, 500); // 通过$once来监听定时器,在bef ...

  6. [vue] vue组件里写的原生addEventListeners监听事件,要手动去销毁吗?为什么?

    [vue] vue组件里写的原生addEventListeners监听事件,要手动去销毁吗?为什么? 需要,原生DOM事件必须要手动销毁,否则会造成内存泄漏 个人简介 我是歌谣,欢迎和大家一起交流前后 ...

  7. Vue框架里使用Swiper - 安装篇

    Vue框架里使用Swiper npm安装swiper cnpm install swiper 相关阅读 Vue框架里使用Swiper 如何在Vue项目中优雅的使用swiper插件 https://ww ...

  8. 解决vue中axios同步的问题

    解决vue中axios同步的问题 参考文章: (1)解决vue中axios同步的问题 (2)https://www.cnblogs.com/zhupanpan/p/11319305.html 备忘一下 ...

  9. VUE created与mounted区别

    VUE created与mounted区别 一.created mounted 1)created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图. 2)mounted:在模板渲 ...

最新文章

  1. 大班体育游戏电子计算机教案,幼儿园大班体育游戏教案《夹球走走走》
  2. AndroidCamera开发学习笔记01
  3. linux系统安装mysql
  4. WPF 关于鼠标事件和坐标
  5. linux 读取内存颗粒,Linux虚拟内存地址转化成物理内存地址
  6. (转)用Ajax技术让IE Web Control Tree View实现大数据量读取
  7. 【Shell 脚本】Mysql 定时备份
  8. 在 Keras 中为循环神经网络添加自定义注意层
  9. 使用Native API查询Windows硬盘分区系统设备名称
  10. 汉字书写解码_汉字密码 | 500个字根即可解码10万个汉字,《说文解字》的神功...
  11. Games 图形学 L2线性代数
  12. Linux 录屏及制作GIF
  13. 实用主义学python_麻瓜编程《实用主义学Python》课程全集下载地址 – 爱学知识网...
  14. 国际国内资管分仓跟单软件的具体作用
  15. Kent Beck揭秘Facebook开发部署流程
  16. Android 集成环信客服云
  17. 包转发率交换容量详解
  18. 【鸿蒙学院】鸿蒙App开发直播学员提问与回答
  19. 数据结构课程设计 公交系统
  20. 华为无线-Portal认证异常-无线强制切换为手机流量

热门文章

  1. matlab二维三维图形绘制和坐标轴范围设置
  2. 举个栗子!Tableau 技巧(175):通过 URL 传参实现不同工作簿的跳转
  3. 上海南到金山卫22号线金山铁路最新时刻表
  4. 计算机网络安全职业资格证书,计算机网络管理员职业资格证书
  5. Node.js 的安装(电脑win7支持的版本)
  6. 简单介绍RESTful风格
  7. Linux只读文件系统
  8. 注册公司经营范围还不知道怎么写?看这一篇就够了!
  9. 牛客网在线编程全部题目
  10. 不需要任何化学药剂的污水处理设备(微纳米气泡技术)