suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Bei mehreren Axios-Anfragen gleichzeitig werden die Daten durch die vorherige Anfrage überschrieben. Wie lässt sich das Problem lösen?

Bei mehreren Axios-Anfragen gleichzeitig werden die Daten durch die vorherige Anfrage überschrieben. Wie lässt sich das Problem lösen?
Die Verwendung von axios.all kann das Problem lösen, aber Sie können nicht immer eine All-Methode hinzufügen, was unpraktisch ist
Axios-Konfiguration

import axios from 'axios'
import store from '../vuex/'
import { Notification } from 'element-ui'
// import router from '../routers'
// axios 配置
axios.defaults.timeout = 10000
axios.defaults.baseURL = '/api/'
// http request 拦截器
axios.interceptors.request.use(config => {
  if (store.state.token) {}
  return config
}, err => {
  return Promise.reject(err)
})

// 后台无返回success因此修改之前的拦截器规则,直接返回数据
// http response 拦截器
axios.interceptors.response.use(response => {
  console.log(response)
  if (response.data.status === 200 || response.data.code === 200) {
    return response.data.data
  } else {
    Notification.error(response.statusText)
    return response.data
    // return Promise.reject(response.statusText)
  }
})
export default axios

API-Konfiguration (es gibt mehrere APIs wie folgt, nicht alle veröffentlicht)

// 1. 产品系列 :: 列表
export const getProductType = params => {
  return axios.get(`/product/type/list`, params)
}

Vuex auf der Seite aufrufen

  store.dispatch('getProductStatus')
  store.dispatch('getProductStyle')
  store.dispatch('getProductType')

vuex-Konfiguration

import {getProductStyle, getProductStatus, getProductType} from '@/http/api'
const state = {
  panelIsShow: false,
  dict: {
    statusDict: [],
    styleDict: [],
    typeDic: []
  }
}
const mutations = {
  SET_PANEL_SHOW (state, data) {
    state.panelIsShow = data
  },
    // 获取产品募集状态字典
  GET_DICT_STATUS (state, dict) {
    state.dict.statusDict = dict
  },
  // 获取产品风格字典
  GET_DICT_STYLE (state, dict) {
    state.dict.styleDict = dict
  },
  // 获取产品系列字典
  GET_DICT_TYPE (state, dict) {
    state.dict.typeDict = dict
  }
}
const actions = {
  // 产品风格
  async getProductStyle ({commit}) {
    let data = await getProductStyle()
    commit('GET_DICT_STYLE', data)
  },
  // 产品募集状态
  async getProductStatus ({commit}) {
    let data = await getProductStatus()
    commit('GET_DICT_STATUS', data)
  },
  // 产品系列
  async getProductType ({commit}) {
    let data = await getProductType()
    commit('GET_DICT_TYPE', data)
  }
}
const getters = {
  panelIsShow: state => state.panelIsShow,
  dict: (state) => state.dict
}
export default {
  state,
  getters,
  actions,
  mutations
}
大家讲道理大家讲道理2708 Tage vor1349

Antworte allen(2)Ich werde antworten

  • 滿天的星座

    滿天的星座2017-07-05 11:07:31

    不会啊。

    贴代码吧。

    这种写法,肯定是要被覆盖了

    Antwort
    0
  • 怪我咯

    怪我咯2017-07-05 11:07:31

    你要是不用all方法当然不能保证顺序,数据当然会被覆盖。

    Antwort
    0
  • StornierenAntwort