From: Eduardo San Martin Morote Date: Wed, 9 Feb 2022 16:35:00 +0000 (+0100) Subject: refactor: wip proper promise chain even with redirects X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=71893682b8b3b8e78d80fcf5971a5ae47e07e82c;p=thirdparty%2Fvuejs%2Frouter.git refactor: wip proper promise chain even with redirects --- diff --git a/e2e/suspense-view/index.ts b/e2e/suspense-view/index.ts index c9e88792..1cbbb407 100644 --- a/e2e/suspense-view/index.ts +++ b/e2e/suspense-view/index.ts @@ -31,11 +31,11 @@ const delay = (t: number) => new Promise(r => setTimeout(r, t)) const AsyncImport = defineAsyncComponent(async () => { await delay(1000) - console.log('finished loading async component') + log('finished loading async component') return defineComponent({ name: 'AsyncImport', beforeMount() { - console.log('done') + log('AsyncImport done') }, template: `
AsyncImport
`, }) @@ -47,27 +47,50 @@ setInterval(() => { n.value++ }, 1000) +function log(...args: any[]) { + const now = new Date() + const time = `${now.getHours().toString().padStart(2, '0')}:${now + .getMinutes() + .toString() + .padStart(2, '0')}:${now.getSeconds().toString().padStart(2, '0')}.${now + .getMilliseconds() + .toString() + .padStart(3, '0')}` + console.log(`[${time}]`, ...args) +} + /** * creates a component that logs the guards * @param name */ -function createAsyncComponent(key: string, isAsync = true) { +function createAsyncComponent( + key: string, + isAsync = true, + hasAsyncChild = false +) { return defineComponent({ name: key, - components: { AsyncImport }, - template: `
${key}: n = {{n}}.
`, + components: { + AsyncImport, + AsyncChild: hasAsyncChild + ? createAsyncComponent(key + ':child', true, false) + : null, + }, + template: `
${key}: n = {{n}}. + ${hasAsyncChild ? `` : ''} +
`, setup() { const route = useRoute() const shouldFail = !!route.query.fail - console.log(`Setup of ${key}...`) + log(`Setup of ${key}...`) const ret = { n } return isAsync ? delay(2000).then(() => { - console.log(`finished setup of ${key}`) + log(`finished setup of ${key}`) return shouldFail ? Promise.reject(new Error('failed')) : ret }) @@ -82,7 +105,7 @@ function createAsyncNestedComponent(key: string) { template: `
${key}: