Рекурсивный обратный вызов async-await с помощью window.location.reload - PullRequest
0 голосов
/ 26 июня 2019

Я await использую некоторый обратный вызов API, который возвращает ответ 401 с обратным вызовом выхода из системы и перенаправляет на страницу входа.Но он продолжает делать window.location.reload для обратного вызова выхода из системы, потому что API вызывается снова и снова на предыдущей странице.Что я могу сделать, чтобы обойти это?

try {
        // Run all actions here that needed to be executed at first
        await this.someMethods()
        await this.someMethods()
        await this.someMethods()
        await this.someMethods()
        await this.someMethods()
      } catch (error) {
        // Check for login session
        const response = Object.assign({}, error)
        if (response.response.status === 401 || response.response.status === 401) {
          AuthService.logout() //LOGOUT CALLBACK
          this.$toasted.show('Season Expired!. Please Re-Login', {
            position: 'top-center',
            duration: 2500,
            type: 'error'
          })
        }
      }

logout () {
    window.localStorage.clear()
    window.location.reload(true)
    router.push('/login')
  }

1 Ответ

0 голосов
/ 26 июня 2019

Может быть, вам нужно использовать Promise.all

Promise.all([promise1, promise2, promise3]).then(function(values) {
  console.log(values);
});

вот ваш пример

try {
        // Run all actions here that needed to be executed at first
        await Promise.all([this.someMethods1() , this.someMethods2() ,this.someMethods3()]) ;

      } catch (error) {
        // Check for login session
        const response = Object.assign({}, error)
        if (response.response.status === 401 || response.response.status === 401) {
          AuthService.logout() //LOGOUT CALLBACK
          this.$toasted.show('Season Expired!. Please Re-Login', {
            position: 'top-center',
            duration: 2500,
            type: 'error'
          })
        }
      }

Таким образом, блок ошибок будет вводиться только один раз

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