【问题标题】:Prioritize certain XHR requests over others using Axios使用 Axios 将某些 XHR 请求优先于其他请求
【发布时间】:2019-04-15 10:29:30
【问题描述】:

我正在制作一个使用 Axios 发出几十个 AJAX 请求的页面,这些请求有点慢,但没关系,因为我使用 Vue.js 只是显示进来的数据。页面的其余部分在 30-60 秒的过程中发生这种情况时,它很好且反应灵敏。

现在,当用户执行一些其他操作也会生成 PUT 或 POST 请求时,通常请求不会运行,直到它到达“它的 turn" 由浏览器指示,这似乎使传出的 XHR 请求先到先服务。因此,由于正在进行的数据获取请求,这一新操作被大大延迟了。

有没有办法通过 Axios 或任何其他方法简单地将这十几个数据获取请求设置为“低优先级”,以便任何新的其他请求可以立即获得下一个可用的传出 HTTP 连接?

我想我可以编写一些函数来处理排队,然后将请求喂给 Axios,但我觉得应该有一种更简单的方法。有什么想法吗?

【问题讨论】:

    标签: ajax http xmlhttprequest axios


    【解决方案1】:

    我必须实现一个自定义方案,其中我的 Javascript 代码使用数组(如 const requestQueue = [])和一系列正在进行的承诺(const pendingRequestPromises = [])将我的 AJAX 请求馈送给浏览器(通过 axios)。可能有几种不同的方法可以做到这一点;一种方法是在调用之前和在每个请求的回调中更新每个数组;然后当pendingRequestPromises.length 等于或大于阈值(比如3)时,使用await 而不是使用即发即弃的方法调用下一个请求。这样一来,请求以 4 次为一组发出,而其他代码可以在突发之间运行。

    这似乎是一个图书馆的工作......也许我应该写它?让我知道你是否可以使用这样的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      • 2022-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多