Ожидание выполнения кода в загрузочном файле quasar.dev перед vue.js создание экземпляра

#vue.js #async-await #quasar-framework

#vue.js #асинхронный-ожидание #quasar-framework #async-ожидание

Вопрос:

Фреймворк quasar.dev вводит понятие загрузочных файлов: https://quasar.dev/quasar-cli/boot-files
Используя vue-oidc-client, я должен дождаться oidc.startup() вызова до создания экземпляра Vue (см. https://github.com/soukoku/vue-oidc-client/wiki#app-start )

Поскольку я не могу просто поместить await вне async функции, мне интересно, как я могу этого добиться.

Мой код в качестве ссылки:

 // Importing stuff and creating 'oidc' with createOidcAuth(...)

const startupSucessful = oidc.startup()
if(!startupSucessful) throw Error("Unable to bootstrap OIDC client");

export default boot(async ({ app, router, Vue }) => {
  oidc.useRouter(router);
});
  

Комментарии:

1. перед созданием экземпляра Vue функция загрузки запускается до его создания и соответствует описанию. Вы пробовали await oidc.startup() ?

2. @EstusFlask Я не могу await выйти за пределы async функции.

3. Вы не должны. ожидание внутри него. Насколько я понимаю, это то, для чего это нужно.

Ответ №1:

Поскольку ваш блок экспорта является асинхронным, просто поместите туда код, который вы хотите дождаться:

 export default async ({ app, router, Vue }) => {
  
  const startupSucessful = await oidc.startup()
  
  if(!startupSucessful) 
    throw Error("Unable to bootstrap OIDC client");
  else
    oidc.useRouter(router);
  
});