微任务dom(await,promise,axios接口)渲染宏任务执行顺序1

<template>
   
  <div>
    为什么了解执行的顺序和时机? 可以判定使用什么函数去处理代码;
    比如:你需要再dom渲染之前做好逻辑处理,等待dom渲染完毕后,展示于页面,此时必用微任务方式处理,必正确;反之需要获取dom的操作就需要采用宏任务的相关代码去包裹处理函数,才不至于获取不到元素而报错!!!
    ****宏任务*****/ // setTimeout、setInterval、AJAX、DOM事件 1.
    script中全部代码(整体); 2. DOM操作; 3. 用户交互操作; 4.
    所有的网路请求; 5. 定时器相关的 setTimeout、setInterval 等;
    ****微任务*****/ // Promise、async/await 1.
    Promise中的then、catch、finally; 2.MutationObserver(监视 DOM 变动的API)
    ;参考MDN 3. Process.nextTick(Node环境,通常也被认为是微任务);
  </div>
</template>
<script>
import axios from "axios";
export default {
  name: 
在Vue中,为了确保数据请求完成后再渲染界面,可以采用以下几种策略: 1. **使用`async/await`**: 使用`mounted`生命周期钩子,在`await`关键字后放置数据请求函数,这样当请求完成并返回结果时,会自动进入下一个代码块执行,此时数据已准备好,可以直接用于渲染: ```javascript export default { async mounted() { try { const response = await axios.get('/your-api-url'); this.yourData = response.data; // 设置数据到组件实例中 } catch (error) { console.error(error); } }, }; ``` 2. **`$nextTick`**:在数据更新后立即执行异步操作,`$nextTick`会在DOM更新完毕后执行,确保数据已应用到视图: ```javascript axios.get('/your-api-url') .then(response => { this.$nextTick(() => { this.yourData = response.data; }); }) .catch(error => { console.error(error); }); ``` 3. **Vuex**:在状态管理库Vuex中,先dispatch一个action请求数据,然后在actions里承诺(Promise)数据返回后再通过mutation更新store,组件通过计算属性或watch监听store变化来更新视图: ```javascript // actions.js export const fetchData = ({ commit }) => { axios.get('/your-api-url').then(response => commit('SET_DATA', response.data)); }; // mutations.js const mutations = { SET_DATA(state, data) { state.yourData = data; }, }; // component.vue computed: { yourData() { return this.$store.state.yourData; }, }, methods: { fetchDataFromStore() { this.$store.dispatch('fetchData'); }, } ``` 在`mounted`钩子中调用这个方法。 无论哪种方式,确保数据请求在视图更新之前完成是非常重要的,以提供更流畅的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端小云儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值