我正在将Vuejs 2.6.11与Vuex 3.2.0和axios v0.19.2配合使用,并且在这个stackoverflow问题中也报告了一个独特的问题:Every Second Vuex Commit to the same action is slow
我已经消除了后端的问题,因为我从Angular 1应用程序和其他地方调用了相同的后端端点,而在第一次调用后所有调用始终保持快速运行没有问题。
我还测试了axios调用,而没有直接在组件中使用vuex,但是我遇到了完全相同的问题。
下面是我本地组件中的axios调用。
async getDataLocal() {
// this.showCollapse = !this.showCollapse
// this.$store.dispatch('getData', {TableId: this.TableId, ViewId: this.ViewId, PageNumber: this.PageNumber, PageSize: this.PageSize })
await this.$axios
.$get(
'/scad/TablesV2/' +
this.TableId +
'/data?ViewId=' +
this.ViewId +
'&PageNumber=' +
this.PageNumber +
'&PageSize=' +
this.PageSize
)
.then(
response => {
this.items = response
},
error => {
reject(error)
}
)
},
,这是Chrome中网络流量的结果。我打完电话大约相隔1秒。
下面是我的vuex动作的代码。
return new Promise((resolve, reject) => {
let ParameterList = payload.ParameterList || {}
vuexContext.commit('loading', true)
this.$axios
.$get(
'/scad/tablesv2/' +
payload.TableId +
'/data.json?ViewId=' +
payload.ViewId +
'&PageNumber=' +
payload.PageNumber +
'&PageSize=' +
payload.PageSize,
{
params: { ParameterList: payload.ParameterList },
crossdomain: true,
withCredentials: true
}
)
.then(
response => {
const result = {
TableId: payload.TableId,
ViewId: payload.ViewId,
PageNumber: payload.PageNumber,
PageSize: payload.PageSize,
data: response
}
vuexContext.commit('getData', result)
resolve(result)
},
error => {
vuexContext.commit('setError', error.response)
reject(error)
}
)
vuexContext.commit('loading', false)
})
这是从有角度的1个应用到同一端点的网络流量。
我搜索了互联网,但找不到任何相关内容。
答案 0 :(得分:0)
我在使用 axios 处理 vue.js 应用程序时遇到了同样的问题。
我发现延迟是由于在 Windows 操作系统上的基于 Chromium 的浏览器中使用 localhost。查看每个网络请求的详细信息时,您可以看到每隔一个 axios 请求都在执行 DNS 查找。
如果您将地址栏中的 localhost 替换为 127.0.0.1,延迟就会消失。