社区
JavaScript
帖子详情
JS函数执行顺序控制
youufis
2010-01-25 04:07:20
假如一个网页里有两个JS函数A和B,同时调用A和B时候,有没有什么办法确保A先执行完成才执行B?
说明A函数里有setTimeOut语句。
查了很多资料都没有解决问题,郁闷!!!
...全文
3950
19
打赏
收藏
JS函数执行顺序控制
假如一个网页里有两个JS函数A和B,同时调用A和B时候,有没有什么办法确保A先执行完成才执行B? 说明A函数里有setTimeOut语句。 查了很多资料都没有解决问题,郁闷!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dctarh
2010-07-25
打赏
举报
回复
function A(){
this.i=0;
this.b=100;
_this=this;
this._do=function(){_this.check()};
for(var j=0;i<this.b;j++){
framemain.location.href='loading.htm';
setTimeout(_do,1000+j*50);
}
this.check=function(){
this.i++;
if(this.i>=this.b){
B();
}
}
}
youufis
2010-01-25
打赏
举报
回复
[Quote=引用 14 楼 ltnrain 的回复:]
貌似跨域的1234.htm没有权限访问。。
[/Quote]
只是在框加中打开访问,没问题!
youufis
2010-01-25
打赏
举报
回复
[Quote=引用 15 楼 licip 的回复:]
谁先调用,谁就先执行,如果是AJAX那就可以设置为同步呀。
[/Quote]
不是谁先调用,谁就先执行
function A()
{
for(i=0;i <100;i++)
{
framemain.location.href='loading.htm'
setTimeout("frametmp.location.href='1234.htm'",1000+i*50);
}
}
function B()
{
framemain.location.href='1234.htm'
frametmp.location.href='loading.htm'
}
比如调用
A();
B();
并不是A()先执行完成,才执行B!
麻烦大家再看清问题,谢谢!!
youufis
2010-01-25
打赏
举报
回复
如果用两个button分开分别先执行A函数,再执行B函数,没什么问题,但是我想A函数执行完成后马上自动执行B函数,(A函数不执行完成就执行B函数是不行的,)整了几天看了很多网上资料,确实没招了!不知道是不是JS完成不了这样的功能?还是我的想法有问题?楼上有几位说给B一个足够长的时间等待再执行,这个是治标不治本,而且A执行多长时间是一个不确定的因素。帮忙顶一下,如果CSDN的老大都不能解决,我就彻底放弃了!!!!
licip
2010-01-25
打赏
举报
回复
谁先调用,谁就先执行,如果是AJAX那就可以设置为同步呀。
草根醉秋意
2010-01-25
打赏
举报
回复
貌似跨域的1234.htm没有权限访问。。
cloudgamer
2010-01-25
打赏
举报
回复
那应该放在iframe的onload执行
youufis
2010-01-25
打赏
举报
回复
谢谢大家,我做一个详细说明:
test.htm页面有两个框架framemain(用来显示打开的网页)和frametmp(隐藏的框架,用来临时调入1234.htm网页)
函数a的作用就是在隐藏框架frametmp打开1234.htm网页前在主框架framemain中打开loading.htm
函数b的作用就是当1234.htm在frametmp加载完成了在主框架显示1234.htm,在frametmp打开loading.htm
说明:test.htm和loading.htm是一个域,并和1234.htm是不同域
function A()
{
for(i=0;i<100;i++)
{
framemain.location.href='loading.htm'
setTimeout("frametmp.location.href='1234.htm'",1000+i*50);
}
}
function B()
{
framemain.location.href='1234.htm'
frametmp.location.href='loading.htm'
}
我的问题就是确保A执行完成了(即1234.htm 加载完成)才执行B。
KK3K2005
2010-01-25
打赏
举报
回复
用callback机制就可以了
吧B函数作为参数传给A函数
由A来控制怎么时候执行 B
如果A里面还有setTimeout 的函数C 则A把执行B的时机交给C 依次类推
pillar0514
2010-01-25
打赏
举报
回复
var AisFinished = false;
function A(){
setTimeout(function(){
AisFinished = true;
},1000);
}
function B(){
if(AisFinished){
alert(1);
}
}
B();
A();
B();
setTimeout(function(){
B();
},2000);
yixianggao
2010-01-25
打赏
举报
回复
lz 说滴是 ajax 异步调用么?!
或者说 a 函数需要读取 sever 端数据么?!
xmliy
2010-01-25
打赏
举报
回复
在b中设置一个足够长的延时,确保b执行的时候a已执行完。或者,在a中设置一个执行结束的标识,在b中定时检查该标志,检测到标志的时候再往下执行
dh20156
2010-01-25
打赏
举报
回复
只能用回调
草根醉秋意
2010-01-25
打赏
举报
回复
在函数a里面调用b
呼吸先生
2010-01-25
打赏
举报
回复
LZ说的确实是一个问题,A没执行完就执行B了,而LZ想要A执行完再执行B而已。
#2楼说的是一个办法。。
cloudgamer
2010-01-25
打赏
举报
回复
setTimeOut再执行b?
道光2008
2010-01-25
打赏
举报
回复
A函数里有setTimeOut语句设定一个标志,显示是否a执行完,如果执行玩则setTimeOut执行B,否则执行a
王集鹄
2010-01-25
打赏
举报
回复
先调谁就是谁
setTimeout一个设置长一个设置断不就好了,,,这也是问题?
js
异步操作回调
函数
如何
控制
执行顺序
本文为大家讲解下
js
异步操作时回调
函数
如何
控制
执行顺序
,感兴趣的朋友可以参考下
jQuery中队列queue()
函数
的实例教程
主要介绍了jQuery中队列queue()
函数
的实例教程,queue()
函数
为JavaScript
函数
的
执行顺序
控制
操作提供了便利,需要的朋友可以参考下
JS
深度揭秘第二章-
函数
深入
1、自执行
函数
原理 2、模块化开发 3、惰性
函数
4、箭头
函数
5、
函数
参数默认值及传递方式 6、reset参数 7、块级作用域 8、堆栈概念 9、垃圾回收机制 10、执行上下文 11、变量对象 12、作用域原理 13、this原理 14、...
JavaScript--
函数
的
执行顺序
4.
函数
调用一次就会运行一次,而且
函数
调用如果在A作用域 它是在B作用域生成的 那么
函数
运行代码在B作用域。4.
函数
调用一次就会运行一次,而且
函数
调用如果在A作用域 它是在B作用域生成的 那么
函数
运行代码在B作用域...
JavaScript回调
函数
执行顺序
解析
根据事件循环的
执行顺序
,JavaScript首先执行同步任务,输出“start”和“second”,然后将回调
函数
添加到任务队列中等待执行。最后,JavaScript在执行栈为空时,从任务队列中获取回调
函数
并将其添加到执行栈中,...
JavaScript
87,904
社区成员
224,614
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章