生命周期的问题

我打印的时候,为什么就算在crated里面写的网络请求,最后还是在app.vue执行mounted之后才会发送网络请求?

错觉

(帖子至少要有10 个字符)

我不信,代码贴出来看看。 :thinking:

我也不信 :mask:

https://github.com/pbw-langwang/Vue-/tree/devPhone7,您可以clone下来运行一下

https://github.com/pbw-langwang/Vue-/tree/devPhone7,您可以clone下来运行一下

写一个在线demo复现下问题吧,你这个看起来太麻烦了😂

不用写demo了,我看了你代码,没有问题。都是 created 先执行,再 mounted 执行。
TabBarItemProductListItem 组件的执行靠后是因为他们使用 v-for 动态渲染的。

1 Like

我也运行了 ,我个人感觉你说的不是发送请求 ,是请求返回值打印的时候在mounted之后,但是不是请求发起的时候。

如果你是说“请求成功”输出在 createdmounted 后面,那也很正常,因为他是异步方法,then 回调要等待请求成功返回才会执行,在此之前 createdmounted 已经先执行了

1 Like

谢谢大佬,主要是我不会写在线dome,刚玩这个社区

是吧,所以网络请求即使写在了created里面,其实还是app.vue执行mounted后才发送的

好的,谢谢大佬指点,这个10个字符限制真的很恼火 :rofl:

我刚注册2个小时= =

结论对了,可是你理解的方式还是不太对。

请求是当场就发了的,但你看到结果是在 mounted 之后。

网络请求即写在了created里面,那么一定是在created里面发出去的。 假设这个call 用了800 毫秒。
而mounted只用50毫秒。那么返回一定是在moounted之后的!mounted不对created进行等待
如果你的mounted渲染一亿条数据用了2秒,返回call肯定是在mounted开始之前返回的。
关键在于理解mounted不对created进行等待!他们都是异步的。

生命周期方法onMounted不等待 onCreate?网络请求是异步发送的,直接说不等待有点不妥

謝謝您的分享, 十分有用

SEO HK
https://seohk.hk

我不太知道你的意思,所以我像说说自己的看法:

  1. app.vue是项目的入口组件,在app.vue组件挂载(mounted)之前,其他组件不会被创建和渲染。

  2. 如果你是说组件内的请求,那很正常,因为网络请求基本是用异步请求,它并不是在monuted后才发送请求,而是在created发送请求,但可能数据量大,网络不佳等情况,直到组件挂载(mounted)之后才成功响应,所以给你一种mounted后才发动请求的错觉,因为可能你习惯console结果

所以建议适当地用debugger测试代码