社区
JavaScript
帖子详情
JS函数执行顺序控制
youufis
2010-01-25 04:07:20
假如一个网页里有两个JS函数A和B,同时调用A和B时候,有没有什么办法确保A先执行完成才执行B?
说明A函数里有setTimeOut语句。
查了很多资料都没有解决问题,郁闷!!!
...全文
4037
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?
烟雨鹏城
2010-01-25
打赏
举报
回复
A函数里有setTimeOut语句设定一个标志,显示是否a执行完,如果执行玩则setTimeOut执行B,否则执行a
王集鹄
2010-01-25
打赏
举报
回复
先调谁就是谁
setTimeout一个设置长一个设置断不就好了,,,这也是问题?
JavaScript--
函数
的
执行顺序
4.
函数
调用一次就会运行一次,而且
函数
调用如果在A作用域 它是在B作用域生成的 那么
函数
运行代码在B作用域。4.
函数
调用一次就会运行一次,而且
函数
调用如果在A作用域 它是在B作用域生成的 那么
函数
运行代码在B作用域...
js
函数
执行顺序
js
函数
在执行过程:1、首先对载入的
js
文件每个
js
代码块进行扫描,读入第一个代码块,进行语法扫描处理;2、如果语法错误,则浏览器报错,该代码块不再进行扫描执行;如果有第二个代码块则进入第二个代码块进行相同的...
JavaScript回调
函数
执行顺序
解析
根据事件循环的
执行顺序
,JavaScript首先执行同步任务,输出“start”和“second”,然后将回调
函数
添加到任务队列中等待执行。最后,JavaScript在执行栈为空时,从任务队列中获取回调
函数
并将其添加到执行栈中,...
浅析 ~ Javascript
函数
执行顺序
参考文档: https://www.cnblogs.com/CBDoctor/p/3745246.html ... 一、Javascript代码整体书写位置: 浏览器加载javascript有个特点,即:页面一旦打开载入之后立即就会执行(先编译...
前端面试——
函数
执行顺序
练习
这个例子清晰地展示了JavaScript事件循环中同步代码、微任务和宏任务的
执行顺序
。主要要点是,同步代码总是首先执行,微任务会在当前宏任务结束后执行,而新的宏任务会在所有微任务执行完毕后才开始执行。这个例子...
JavaScript
87,996
社区成员
224,693
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章