Vue. js дождаться ответа ax ios перед выполнением другой функции - PullRequest
0 голосов
/ 06 апреля 2020

моему приложению нужен токен для каждого вызова API, который он делает. моя проблема в том, что функции выполняются до того, как я наберу gettoken()

, поэтому мой вопрос заключается в том, как остановить vue от выполнения кода до тех пор, пока gettoken() не закончится

Мой код main. js

methods:
{
  getValidToken() {
    if (VueCookies.get('token') === null) {
      let requestBody = {
        client_id: "shopping_oauth_client",
        client_secret: "shopping_oauth_secret"
      };
      let requestHeader = {
        Authorization:
          "Basic c2hvcHBpbmdfb2F1dGhfY2xpZW50OnNob3BwaW5nX29hdXRoX3NlY3JldA",
      };
      window.axios
        .post(window.main_urls["get-token"], requestBody, {
          headers: requestHeader
        })
        .then(response => {
          VueCookies.set("aamts2124222", response.data.access_token);
          return VueCookies.get("token");
        });
    } else {
      return VueCookies.get("token");
    }
  }
}

cart. vue

getCartContent() {
  let requestHeader = {
    Authorization: "Bearer " + this.getValidToken()
  };
  window.axios
    .get(window.main_urls["get-cart"], { headers: requestHeader })
    .then(response => {
      if (response.data.error === "Cart is empty") {
        this.emptyCart = true;
        this.loading = false;
      } else {
        this.loading = false;
        this.cartData = response.data.data;
      }
    });
},

Итак, как ждать getValidToken(), затем выполнить getcartcontent()

1 Ответ

1 голос
/ 06 апреля 2020

Вы можете использовать async-await в вашем getCartContent() методе.

Примерно так:

async getCartContent() {
  let token = await this.getValidToken();
  let requestHeader = {
    Authorization: "Bearer " + token
  };

Это гарантирует, что ваш requestHeader будет иметь токен, прежде чем он выполнит линия.

...