class AsyncQueue {
constructor(result) {
this.queue = [];
this.result = result;
}
isStreaming = false;
add(promise) {
this.queue.push(promise);
if(!this.isStreaming)
this.stream();
}
async stream() {
this.isStreaming = true;
for await (const result of this.queue) {
this.result(result);
}
this.queue.length = 0;
this.isStreaming = false;
}
}data() {
const schedulesQueue = new AsyncQueue(this.showLoadedSchedules);
return {
schedulesQueue,
// ...
}
},
methods: {
showLoadedSchedules(response) {
if(this.curDateEvent) {
this.changeMobileDay(this.curDateEvent);
}
// ...
},
addSchedulesToQueue(locationId, gameModeId, selectedHeadsets, day) {
let param = 'locationId=' + locationId + '&gameModeId=' + gameModeId + '&headsets=' + selectedHeadsets
if (day)
param += '&day=' + day;
return this.schedulesQueue.add(
axios({
method: 'get',
url: 'schedules?' + param
}).catch((error) => {})
);
}
} Promise, что такое async\await. Без этого ты никуда не уедешь.this.svg = await getFileContent(url), либо так getFileContent(url).then(a => this.svg = a). Promise всегда возвращает Promise. Тебе надо дождаться выполнения Promise'а тем или иным способом.this.svg = getFileContent(url) - конечно у тебя в this.svg лежит Promise. Этот Promise только начинает выполнение и никаких данных там нет. Данные в него прилетят возможно через час, если ты на модеме.$emit событие. props.provide в родителе и inject в обоих комонентах.Vue.observable/Vue.reactive и, соответственно, import в обоих компонентах.mounted у тебя происходит раньше чтем getCookie() сработает, а потому отправляет запрос до авторизации. Если это так, то подожди рисовать компонент\запрашивать юзера, пока не убедишься в авторизации.new Promise(resolve => {
resolve(token);
}); -> Promise.resolve(token); @input как раз должен работать:window.createApp = createApp;
window.store = store;<keep-alive>.Vue.observable, в Vue 3 просто через Vue.ractive. entry для вебпака, чтоб он скомпилировал результат. Или сделать отдельный webpack проект для этого скрипта.