栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

等待AJAX​​完成后再继续循环吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

等待AJAX​​完成后再继续循环吗?

首先,您确实需要了解Ajax调用是如何异步的(这就是Ajax中的“
A”所代表的意思)。这意味着调用

$.ajax()
仅启动ajax调用(它将请求发送到服务器),其余代码愉快地继续运行。有时,在其余代码执行完毕之后,当响应从服务器返回时,将调用成功或错误回调处理程序。这不是顺序编程,必须采用不同的方法。

#1的意思是,在ajax调用之后,任何您想发生的事情都必须在成功或错误处理程序中或从那里进行。位于ajax调用之后的代码将在ajax调用完成之前运行很长时间。


因此,有多种方法来构造代码以与该异步概念一起使用。如果一次只需要一个异步ajax调用,则必须进行此重组,并且不能使用简单的

for
循环。相反,您可以创建一个索引变量,然后在完成函数中增加索引并开始下一次迭代。这是一种编码方式:

function addToUserGroupList() {    _root.qDomId('js-assignGroupArrBtn').disabled = true    var i = 0;    function next() {        if (i < selectIds.length) { $.ajax({     type: "POST",     url: 'groupManage.ashx',     dataType: 'text',     data: 'type=getInfo&groupId=' + selectedIds[i],     success: function (result) {         i++;         if (result != '') {  this.groupName = result.split('&')[0];  this.groupNotes = result.split('&')[2];  userGroupList.push({ 'uid': parseInt(selectedIds[i]),      'name': this.groupName,      'adminStr': this.groupNotes  });  _root.userListObj.gourpInst.gourpTB(userGroupList);         }         next();     },     error: function (XMLHttpRequest, status, errorThrown) {         alert('failed to add to user's group.');     } });        } else { // last one done _root.qDomId('js-assignGroupArrBtn').disabled = false; selectedIds = [];        }    }    // kick off the first one    next();}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375466.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号