【问题标题】:How would I send AJAX requests faster [closed]我将如何更快地发送 AJAX 请求 [关闭]
【发布时间】:2016-07-02 21:10:26
【问题描述】:

我想同时发送 AJAX 请求。我尝试使用 for 循环

for(i = 0;i <= 10; i ++){
    $.get("http://search.roblox.com/catalog/json?CatalogContext=1&SortType=0&SortAggregation=3&SortCurrency=0&LegendExpanded=true&Category=0", function(r){
        var date = new Date();
        console.log(date.getTime());
    });
}

但是,它们不是同时发送的,并且记录的时间之间存在明显差异。我想基本上在同一时间发送它们(如果可能的话)。 我想知道是否有任何方法可以做到这一点?

【问题讨论】:

  • AJAX 中的 A 表示 ASYNCHRONOUS。
  • 不是真的@Kevin。只需在 for 循环中放置一个 for 循环,我就可以让它变得更快。
  • 不,你没有,浏览器仍然只允许每秒 x 个并发请求,x 远远小于单个 for 循环在一秒钟内可以发送的数量。
  • @KevinB 不正确,它会以越来越快的速度降低性能!
  • 作为警告,请不要侮辱他人。这些 cmets 已被删除。

标签: javascript jquery ajax


【解决方案1】:
 <!DOCTYPE html>
@*!!!!!!!!!! added to routes routes.IgnoreRoute("{resource}.axd/{*pathInfo}");!!!!!!!*@
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <script src="~/Scripts/jquery-1.8.2.min.js"></script>
    <style type="text/css">
        body {
            width: 300px;
        }
    </style>
</head>
<body>


    <div class="aSpinner" style="display: none;" onclick="">
        <img src="~/Content/ajax_busy2.gif" title="Please wait.... Contacting server for action..." />
        ...Please wait.... Contacting server for action...
    </div>
    <div id="divMore"></div>

    <div>
        <script type="text/javascript">

            $(".aSpinner").show();

             $.when(
                    $.get("/Main/Index01", function (html01) {
                        $("#divMore").append(html01);
                    }),
                    $.get("/Main/Index02", function (html02) {
                        $("#divMore").append(html02);
                    }),
                    $.get("/Main/Index03")
                        ).then(function () {
                            // All is ready now, so...
                            $("#divMore").append("all three call done aynchronously");
                        });
        </script>


    </div>
</body>
</html>

经常");

    public class MainController : Controller
    {
        //
        // GET: /Main/

        public string Index01()
        {
            return "index01";
        }

        public string Index02()
        {
            return "index02";
        }

        public string Index03()
        {
            return "index03";
        }

});

【讨论】:

  • 最后一次get好像是传参有问题,可能是链中最后一次调用不一样
  • 这个答案不完整,也没有经过测试。请查看:api.jquery.com/jquery.when
  • 完全感谢css-tricks.com/…
  • 本文讨论了等待 3 个 AJAX 请求完成后再呈现结果。 在我们的简单用例中,我们可以使用 jQuery 的 $.when() 方法,它获取这些“Deferred”对象的列表(所有 jQuery Ajax 方法都返回 Deferred 对象),然后提供单个回调。判断此解决方案是否会回答 OP 的问题,因为问题尚不清楚,我们不知道他想要达到的目标。
猜你喜欢
  • 2017-09-24
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多