S
S
stepan1322019-08-15 17:53:14
API
stepan132, 2019-08-15 17:53:14

Why is the server returning an incorrect result?

Hello. Faced the problem that the server returns incorrect data. Here is the action creator code:

export let rateFilm = (sessionId, filmId, rating) => async (dispatch) => {
    try {
        let response = await service.rateFilm(sessionId, filmId, rating);    //ставим рейтинг фильму

        if (response.status_code !== 1 && response.status_code !== 12 && response.status_code !== 13) throw new Error('Что-то пошло не так, попробуйте позже');   //Выкидываем ошибку, если ответ от сервера содержит ее

       //сама ошибка:
      let filmStates = await service.getMovieAccountStates(filmId, sessionId);
       //после обращения к серверу мы берем поставленный рейтинг фильма с сервера (приходит старое значение)
        console.log(filmStates);   //Выводит старый рейтинг
        dispatch({type: 'SET_FILM_STATES', payload: filmStates}); //сюда приходит старый рейтинг

        //Но после обращения к серверу через 3 секунды, рейтинг фильма успел обновиться и является корректным
        setTimeout(async () => {
            let filmStates = await service.getMovieAccountStates(filmId, sessionId);
            console.log(filmStates); //Выводит корректный (новый) рейтинг
        }, 3000);

    } catch (err) {
        dispatch({type: 'SET_FILM_STATES_ERROR', payload: err.message});
    }
}

that is, the server does not seem to have time to update the value and sends the old one. How can this problem be solved? Thanks in advance.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
stepan132, 2019-11-29
@stepan132

The problem was that the browser cached the result received from the server, so the result was not correct

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question