SPA 中的待处理 AJAX 请求会冻结应用

Pending AJAX requests in a SPA freeze the app

在我的 durandal 应用程序中,我每 10 秒就会收到一些轮询请求。但有时,如果服务器停止响应该轮询,则请求会保持挂起状态。如果待处理请求的数量超过浏览器支持的数量,它会冻结应用程序并需要刷新浏览器。

我已经尽可能地结合了民意调查,并确保只有在前一个请求完成后才提出新的请求。但我仍然有很多并行民意调查。此外,此时切换到套接字并不容易。

想知道在 SPA 领域避免此类问题的最佳做法是什么。

您应该能够通过递归地将它们链接在一起来防止无限数量的并行 ajax 请求。假设您有两个并行的 ajax 请求,您可以这样做:

function doCallOne() { 
    $.get('urlOne').done(doCallOne);
}
function doCallTwo() { 
    $.get('urlTwo').done(doCallTwo);
}
doCallOne();
doCallTwo();

现在,您将拥有在上一个呼叫解决后连续链接的呼叫。您可以进一步扩展这些功能以产生最小延迟、手动退出等。然而,永远不会发生的是,第一个呼叫有多个未决呼叫。