javascript:循环中如何等待方法完成了再继续?

for(i++){a(i);}functiona(num){要做很多事情,如ajax获取信息等。}问:1、如何实现等待方法a完成了工作才继续?2、换成函数是否会有改善?注... for(i++)
{
a(i);
}
function a(num)
{
要做很多事情,如ajax获取信息等。
}
问:
1、如何实现等待方法a完成了工作才继续?
2、换成函数是否会有改善?

注:不想用判断xmlHttp.readyState等方法来实现。
初学者,麻烦请示例。我自己弄好像弄不了

a里面执行了几次的ajax连接啊,这是需要时间的。必须等到a方法中的所有方法都完成了,才进行下一个循环。现在出现的结果是,i一下子直接到最大值了,根本没有等到a去执行。

就是不想用xmlHttp.readyState啊,js不提供其它途径吗?等到a执行完成了,i再加一。
我的for没问题。如果我在a之后加个alert中断,a就有足够的时间去完成工作,整个程序有效。当然不可能加延时的,因为完成的工作时间不可估计。

---------------------------------------------------------------------------------
这样问可能清晰一点吧:
var content;//页面内容
a();//a用ajax取得页面内容,赋给全局变量content
b();//对content进行处理
但是,a都还没执行完,都还没拿到内容给content,b就开始处理了
怎么办?
限制:不把b()放到a()中。
---------------------------------------------------------------------------------
展开
 我来答
akfucc
2008-04-16 · TA获得超过5454个赞
知道大有可为答主
回答量:1771
采纳率:0%
帮助的人:2189万
展开全部
如果要实现你的这种效果,应该把思路改变一下

function a(num)
{
//这里面有用到Ajax的技术,当然一般会有个回调函数
//假定这个回调函数为callback()
}

function callback()
{
//把for循环的判断移到这里来
//打个比方,当i=0时,已经调用了a(num)
//if (xmlHttp.status == 200) {
//这里处理的当i=0时的事件
//再次调用a(num)
//}
}

也就是说没有for循环了,当你想再次调用这个a函数时,实际上是在回调函数里完成的,即当上次的Ajax请求成功返回并处理后会再次发出Ajax请求
乌微月2S
2008-04-15 · TA获得超过5037个赞
知道大有可为答主
回答量:5361
采纳率:42%
帮助的人:2872万
展开全部
ajax中有个 if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
这个就是已经就绪的标志!4和200都是标志。

xmlhttp的状态:1 装备阶段、2 发送、3 接收、4 所有数据接收完成。

服务器返回的状态:200 正常返回。 404 网页不存在 等。
xmlHttp.onreadystatechange =(function)
这个是触发之后要调用的函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
扬自飞扬
2008-04-16 · TA获得超过369个赞
知道小有建树答主
回答量:313
采纳率:0%
帮助的人:0
展开全部
xmlHttpRequest.open("POST", url, false); // 同步请求,true为异步
不就会等待你的ajax请求返回了吗?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tolys
2008-04-15 · TA获得超过251个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:162万
展开全部
一般用方法的回调来解决此类问题,
难道你现在的程序a方法没完成他就开始循环了?
程序是按顺序执行的啊,你描述的有问题!
晕,那就是你的for循环写的有问题!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Winal2007
2008-04-15
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
用匿名函数可以实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式