安装网站模版视频教程网站建设案例实录
web/
2025/10/1 4:45:22/
文章来源:
安装网站模版视频教程,网站建设案例实录,网络规划设计师教程第三版云盘下载,超级外链吧vue3获取当前路由为什么一直是 / ?
今天在写项目的时候#xff0c;我想获取到当前的路由去做路由的匹配#xff0c;我靠#xff0c;不知道抽什么风一直获取的路由是 /
最搞笑的是gpt都不明白问题出在哪里 #xff0c;经过一顿百度#xff0c;最终发现问题如下#xff…vue3获取当前路由为什么一直是 / ?
今天在写项目的时候我想获取到当前的路由去做路由的匹配我靠不知道抽什么风一直获取的路由是 /
最搞笑的是gpt都不明白问题出在哪里 经过一顿百度最终发现问题如下
router给fullPath赋值是微任务那么只需要通过宏任务获取fullPath就可以了
onMounted(() {setTimeout(() {console.log(router.currentRoute.value.fullPath);}, 0);
});这就需要恶补一下基础了
在 JavaScript 中事件循环Event Loop是管理异步任务执行的机制。在事件循环中任务被分为宏任务macro-task和微任务micro-task它们在不同的阶段被执行。
**宏任务Macro-task**宏任务包括整体代码块、setTimeout、setInterval、setImmediateNode.js 中的特殊情况、I/O 操作等。在每一次事件循环中宏任务队列中的任务会按照顺序执行执行完一个宏任务后会检查微任务队列是否为空如果不为空则依次执行微任务队列中的任务。当微任务队列为空时会开始执行下一个宏任务。**微任务Micro-task**微任务包括 Promise 的回调函数、MutationObserver 的回调函数等。在每一个宏任务执行完之后会立即执行微任务队列中的所有任务直到微任务队列为空。微任务执行完毕后会继续执行下一个宏任务。
具体的执行过程可以概括为以下步骤
执行当前宏任务例如执行整体代码、定时器回调等。检查微任务队列依次执行微任务队列中的所有任务直到微任务队列为空。更新渲染如果需要。从宏任务队列中取出下一个宏任务执行它。重复上述步骤。
因此微任务会在当前宏任务执行完毕后立即执行而宏任务则会在下一个事件循环中执行。这就是为什么使用 setTimeout(callback, 0) 可以将任务放到宏任务队列中以确保在当前事件循环中其他任务执行完毕后再执行。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84855.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!