12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- /**
- * @typedef {import("vue-router").default} VueRouter
- */
- /**
- * 等待VueRouter实例就绪后,执行的回调函数
- * @callback Callback
- * @param {VueRouter} router 全局的VueRouter实例
- */
- let isReady = false
- const pendingCallbacks = []
- /**
- * 全局的VueRouter实例
- * @type {VueRouter}
- */
- // @ts-ignore
- let router = {
- // 填充些假数据,供开发手册使用
- currentRoute: {
- path: '/dummy',
- hash: '',
- query: {},
- params: {},
- // @ts-ignore
- matched: [{ path: '/dummy' }],
- fullPath: '/dummy',
- },
- }
- /**
- * 等待VueRouter实例就绪后,执行回调函数
- * @param {Callback} callback
- */
- function routerReady(callback) {
- if (isReady) {
- // eslint-disable-next-line standard/no-callback-literal
- callback(router)
- } else {
- pendingCallbacks.push(callback)
- }
- }
- function fireReady($router) {
- router = $router
- isReady = true
- while (pendingCallbacks.length) {
- const callback = pendingCallbacks.shift()
- // eslint-disable-next-line standard/no-callback-literal
- callback(router)
- }
- }
- export { fireReady, router }
- export default routerReady
|