社区
JavaScript
帖子详情
JS函数执行顺序控制
youufis
2010-01-25 04:07:20
假如一个网页里有两个JS函数A和B,同时调用A和B时候,有没有什么办法确保A先执行完成才执行B?
说明A函数里有setTimeOut语句。
查了很多资料都没有解决问题,郁闷!!!
...全文
3912
19
打赏
收藏
JS函数执行顺序控制
假如一个网页里有两个JS函数A和B,同时调用A和B时候,有没有什么办法确保A先执行完成才执行B? 说明A函数里有setTimeOut语句。 查了很多资料都没有解决问题,郁闷!!!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
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一个设置长一个设置断不就好了,,,这也是问题?
相关推荐
【Kotlin 协程】协程启动 ② ( 多协程
控制
| launch 协程
执行顺序
控制
| Job#join()
函数
| async 协程
执行顺序
控制
| Deferred#await()
函数
)
一、launch 协程
执行顺序
控制
、 二、async 协程
执行顺序
控制
、 三、完整代码
javascript从入门到跑路-----小文的
js
学习笔记(6)-----三大流程
控制
语句---顺序
控制
、分支
控制
、循环
控制
** javascript从入门到跑路-----小文的
js
学习笔记(1)---------script、alert、document。write() 和 console.log 标签 … … javascript从入门到跑路-----小文的
js
学习笔记目录 **
js
中的流程
控制
语句呢一共分有三类:顺序
控制
、分支
控制
和循环
控制
1、顺序
控制
含义:就是让程序顺序的执行,系统默认的顺序就是从左到右,...
js
笔记
案例:按钮点击弹出对话框
js
的基本介绍 ①
js
是一种脚本语言(介于编程语言之间,配合其他语言来写。特点:不能独立运行,往往配合别的语言使用,比如:html php...语法和规则不是很严格); ②
js
有自己的
函数
(系统
函数
,自定义
函数
)变量,
控制
语句(顺序
控制
,分支,循环),语法规范不是特别的严格。 ③
js
是解释执行语言
js
源码->直接被执行(
js
引擎,内嵌到浏览器里)
java中线程
执行顺序
控制
java中线程
执行顺序
控制
发帖
JavaScript
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
8.7w+
社区成员
22.4w+
社区内容
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
帖子事件
创建了帖子
2010-01-25 04:07
社区公告
暂无公告