使用 axios 的 Vuejs 页面中的多个并发请求

Posted

技术标签:

【中文标题】使用 axios 的 Vuejs 页面中的多个并发请求【英文标题】:Multiple concurrent requests in a Vuejs page using axios 【发布时间】:2018-07-01 17:00:34 【问题描述】:

我使用 Vuejs 创建了一个小组件,它向传递的 URL 发出 Ajax 请求以确定其初始值。

当我有几个该组件的实例时,一切都很好。但如果我有超过 5/6 个实例,所有请求都将永远挂起,我需要重新启动 Valet 才能访问我的任何本地网站。

每个实例都指向同一个域中的不同端点:

Instance1 => example.com/endpoint1

Instance2 => example.com/endpoint2

Instance3 => example.com/endpoint3

...

每个实例都不知道其他实例。他们之间根本没有交流。

为什么会出现这个问题?是浏览器相关还是服务器相关?

(对于后端,我使用的是在 Valet 上运行的 Laravel 5.5)

【问题讨论】:

【参考方案1】:

我相信只有在前端和后端进行更多日志记录的您才能回答这个问题。

解决方案是让父组件执行 ajax 调用,然后将结果传递给子组件。

这样您就可以限制同时请求的数量,并在需要时在请求之间添加超时。

您可以实现它并使用变量(同时请求的数量和批次之间的超时)直到它起作用,但我建议您先了解问题的根源,我们没有足够的信息来帮助您.

【讨论】:

感谢@Felwin!我一直在按照您的建议进行一些日志记录,看起来与我的本地环境有关。出于某种原因,我不能同时提出超过 5 个请求。我已经在测试服务器上对其进行了测试,一切正常。也许是与代客或 nginx 相关的问题。我会尝试在这里研究并发布解决方案。

以上是关于使用 axios 的 Vuejs 页面中的多个并发请求的主要内容,如果未能解决你的问题,请参考以下文章

vuejs 中的 Axios 有时使用 wamp 给我一个错误

如何在 vuejs 中使用 axios 从数组中发布多个请求?

如何更正vuejs中的网址?

vuejs 应用程序中异步 axios 调用的多个响应的竞争条件

尝试使用 VueJs 和 Axios 显示对象

使用 axios 的带有 vuejs 的 framework7