异步请求放在create还是mounted

1、首先异步请求不能放到beforeCreate生命周期中,因为此时方法和数据还没初始化;

2、this.$nextTick 是 Vue.js 中的一个方法,用于在 DOM 更新后执行回调函数。可以将其视为一个微任务,是利用浏览器的事件循环机制,在下一次 DOM 更新循环结束之后执行,setTimeout如下图比this.$nextTick更晚

3、如果页面中只有一个组件,请求放到created和mounted中都无所谓,因为ajax是异步,所以根据EvenLoop事件循环机制,creaed跟mounted是同步调用的,ajax是异步任务,会经历一次EventLoop,所以ajax(微队列中的微任务)一定会在created()、mounted()之后执行,所以ajax不论是created还是beferCreated都一定会延迟到mounted()之后执行,所以即便ajax放到beferCreated()钩子中,ajax回调依旧可以操作子组件或节点。

异步请求放在create还是mounted_第1张图片
异步请求放在create还是mounted_第2张图片

4、如果涉及到了要控制子父组件先后显示正确内容的时候(父组件先执行3个生命周期,子组件在执行4个生命周期),此时父组件包含了子组件,子组件渲染需要页面有自己的请求,父组件中除了子组件还有其他部分需要异步数据,那么一般情况下想要子组件先显示,就将父组件中的请求放到mounted,想要先显示父组件除了子组件之外的部分,就将请求放到created,子组件的请求放在哪里都无所谓

你可能感兴趣的:(okhttp)