如何使用中间件向一个页面发出2个Axios请求?

问题描述 投票:0回答:1

需要使用中间件对一页发出2个不同的请求。我想到的第一件事是这样的:(我知道2个返回值看起来很傻。)

export default function ({$axios, req, store, route}) {

  if(route.name == "language-tracker-tracking") {

      console.log('111');

      return $axios.get("https://seo-gmbh.eu/couriertracker/json/couriertracker_api.php?action=get_tracking_data&key_id=" + route.params.tracking.toLowerCase(), {})
          .then(response => {
              store.commit('tracking/setTrackingServerData', response.data.data.tracking_data);
          })
          .catch(function (error) {
              console.log(error);
          });


  }

  if(route.name == "language-tracker-tracking") {

      console.log('222');

      return axios.get("https://seo-gmbh.eu/couriertracker/json/couriertracker_api.php?action=get_tracking_status" , {
         })
        .then(response => {
            store.commit('tracking/setTrackingStatus', response.data.data.tracking_status);
        })
        .catch(function (error) {
          console.log(error);
        });

  }

}

接下来,在Firebug中查看控制台:

введите сюда описание изображения

我们可以在屏幕截图上观察-只有第一个请求被触发。(console.log('111');)题:如何从语法和设计的角度正确地发布一个构想?

javascript vue.js axios nuxt.js
1个回答
0
投票
    const R1='/requestAPI';
    const R2='/requestAPI';
    try{
       axios.all([
          this.$axios.get(`${R1}`),
          this.$axios.get(`${R2}`),
        ])
            .then(axios.spread((R1,R2) => {
                store.commit('tracking/setTrackingServerData',R1); //or set  the value to your data
                store.commit('tracking/setTrackingStatus',R2); //or set  the value to your data

            }));
    }catch (e) {
        console.log(e)
    }

注意:

  • 注意allspreadthen中R1和R2的顺序
  • 我已经在nuxt.config.js中预定义了axios的基本URL,您可以这样做或import axios并使用axios.get('fullUrl')而不是this.$axios.get()
© www.soinside.com 2019 - 2024. All rights reserved.