Многократные коммиты в действии vuex, не вызывающие мутации - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь установить статус загрузки для компонента, который будет отображать график загрузки c во время обработки запроса. У меня это работает с вызовом API, возвращая обещание из выборки в интерфейс REST. Однако, при попытке сделать это простым вызовом службы, кажется, что она вызывает только последнюю мутацию

В хранилище vuex:

var initialState = {
    status: { loading: false },
    all_clients: [],
    current_client: {
        loaded: false,
    }
}

export const fund = {
    namespaced: true,
    state: initialState,
   actions: {
        getClientOverview({ commit }, client_group_id) {
            commit('loadingRequest');

            clientService.getClientOverview(client_group_id)
                 .then(
                     clientInfo => {
                        commit('loadingSuccess')
                     },
                     error => {
                        commit('loadingError', error);
                    }
                 )
        }
    },
    mutations: {
        // Mutations to set loading and error statuses
        loadingRequest(state) {
            state.status = { loading: true };
        },
        loadingSuccess(state) {
            state.status = { loading: false };
        },
        loadingError(state,error) {
            state.status = { loading: false };
            store.dispatch('alert/error', "Error Loading Client: " + error)
        },        
   }

и в соответствующей клиентской службе, которая вызывается:

function getClientOverview(client_group_id) {
    return new Promise((resolve,reject) => {
        try {
            // Note here that client.state.all_clients is an array of objects already set in the store

            let clientDetail = client.state.all_clients.filter(function(item) {
                return item.client_group_id === client_group_id;
            });

            // THIS PAUSE CODE JUST ADDED TO SLOW THINGS DOWN A BIT ON FRONT END 
            // SO I CAN SEE IF MUTATIONS ARE WORKING CORRECTLY
             var d = new Date();
             var d2 = null;
             do { d2 = new Date(); }
             while(d2-d < 2000);
            // TO HERE

            if(clientDetail.length == 0){
                reject("Client Information not found")
            }
            resolve(clientDetail[0])
        }catch(error){
            reject(error)
        }
    })
}

Клиент возвращается, как и ожидалось, в качестве решенного обещания, но я вижу только, что для параметра loading для внешнего интерфейса задано значение false, для него не установлено значение true во время работы службы. его процесс.

Если я удаляю строку commit ('loadingSuccess'), то я вижу исходную фиксацию, вызываемую как ожидалось, и загрузку устанавливаемую в true - кажется, что только одно коммита вызывается за действие

Буду признателен за любую помощь в этом!

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...