#javascript #vue.js
Вопрос:
Я создал состояние Vue: (components.js)
const actions = {
[DCOMPONENTS] (context) {
return new Promise (resolve => {
ESApiService.get ("/ api / components")
.then (({data}) => {
context.commit (SET_COMPONENTS, data.data.data);
//context.commit(SET_USER_ACCOUNT, payload);
resolve (data);
})
.catch (({response}) => {
context.commit (SET_ERROR, response);
});
});
},
};
Это выполняется немедленно, если вы вошли в приложение. Затем я хочу использовать эти данные в компоненте SalesTable.vue.
Это тоже идет хорошо. В SalesTable.vue я использую новый вызов Axios, чтобы получить другой набор данных, который мне не нужно хранить в состоянии.
methods: {
async loadTable () {
await this. $ store
.dispatch (SALES)
let tableName = 'SalesTable';
var components = this.getComponents;
var sales = this.getSales;
var i;
for (i = 0; i <components.length; i ) {
if (components [i] .name == tableName) {
var structure = components [i];
}
}
var jsonData = {};
jsonData.structure = structure;
jsonData.data = sales;
this.structureTable = jsonData;
this.dynamicComponent = Tables;
},
Проблема: Иногда случается так, что components.js Обещание позже, чем 2-й вызов Axios в SalesTable.vue. Это означает, что набор данных (this.structurable = jsonData) не полностью загружен данными о состоянии, и моя таблица не будет генерироваться.
Комментарии:
1.
ESApiService.get()
похоже, что он уже вернул обещание. Нет необходимости заворачивать его в новый2. »
this. $ store
» 👈 что случилось со всеми синтаксическими пробелами?3. @Фил извини, это ошибка. Это: конечно, этот магазин.$. Проблема в том, что, когда я вызываю функцию loadTable в SalesTable.vue, иногда вызов Axios, который происходит в состоянии, еще не готов. Я хочу убедиться, что вызов Axios (состояние установлено) полностью выполнен, прежде чем будет запущена функция LoadTable.