qq_26624753 2017-03-16 15:27 采纳率: 100%
浏览 3054
已采纳

ajax同步传输,浏览器响应慢,求解决

附部分代码:

  for(var i=0; i<arr1.length; i++) {
            $.ajax({
                method: 'GET',
                async:false,
                url: '/mainrver/ajax?key=' + arr1[i]
            }).success(function (data) {
                _api_1 = data.data;
                for(var j=0; j<_api_1.list.length; j++){
                    list_all[k]=_api_1.list[j];
                    k++;
                }
            }).error(function () {
                spinner.hintMsg(common.MESSAGE.network_err);
            });
        }
        console.log(list_all.length);

原来async:true时候,console.log(list_all.length);一直是0
改为false,目的可以达到,但是慢到爆

  • 写回答

3条回答 默认 最新

  • Go 旅城通票 2017-03-17 01:53
    关注

    异步的话第一个ajax都没返回就已经执行你的log函数了,获取不到数据。同步的话网速慢浏览器会假死或者没有反应,因为要等待ajax请求完毕,网速慢你请求很多并且服务器处理速度慢基本要假死很久一段时间

    改为异步,并且用一个状态记录住所有请求完毕后再执行log操作

    
        function doAjax(arr1,callback) {
            doAjax.total = arr1.length;//记录总ajax请求数量,下面成功或者失败都-1,位0时再执行回调
            var list_all = [],k=0;///
            for (var i = 0; i < arr1.length; i++) {
                $.ajax({
                    method: 'GET',
                    async: true,dataType:'json',
                    // url: '/mainrver/ajax?key=' + arr1[i],
                    url: 'data.txt'
                }).success(function (data) {
                    _api_1 = data.data;
                    for (var j = 0; j < _api_1.list.length; j++) {
                        list_all[k] = _api_1.list[j];
                        k++;
                    }
                    ////////////////
                    doAjax.total--;
                    if (doAjax.total == 0) callback(list_all);
                    ////////////////
                }).error(function () {
                    ////////////////
                    doAjax.total--;
                    if (doAjax.total == 0) callback(list_all);
                    ////////////////
                    spinner.hintMsg(common.MESSAGE.network_err);
                });
            }
    
        }
    ////////////////////////
        doAjax([1, 2, 3], function (list_all) { console.log(list_all); console.log(list_all.length); });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行