为什么js宏任务会比微任务先执行

关于一个宏任务微任务执行顺序问题:
父组件发请求获取数据->通过props传给子组件
子组件修改数据后,emit父组件父组件获取数据的函数->子组件数据更新`

父组件的获取数据函数:

    getList(){
        axios.get(`/getList`).then(res=>{
          if(res.code==200){
  			this.tableData=res.data
          }
        })
    },

父组件Template:

<template>
	<child :tableData="tableData" :getList="getList"></child>
</template>

子组件的获取数据函数:

    getData(){
      this.tableData=[]; 
      this.$emit('getList')
      setTimeout(()=>{
          this.list=this.tableData
          console.log(this.tableData)
      },100)
    
    //  this.$nextTick(()=>{
    //   console.log(this.tableData)
    //   this.list=this.tableData
    //  })
    }

微任务会比宏任务先执行,现在有两种方法:
1.使用nextTick
但是在nextTick回调函数中赋值,this.tableData不是父组件getList请求完成后的数据,而是空数组
2.使用setTimeout
在setTimeout回调函数中赋值:
当设置延迟执行时间小于请求响应时间时,this.tableData不是父组件getList请求完成后的数据,而是空数组
只有当设置的延迟时间大于请求响应时间时,this.tableData才是父组件getList请求完成后的数据
请问这是为什么?不是微任务会先于宏任务执行吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值