javascript - setTimeout参数问题 为什么没有延迟呢
天蓬老师
天蓬老师 2017-04-10 15:38:52
[JavaScript讨论组]
        var i=0;
        setTimeout("i=i+1;alert('A1')",1000);
        setTimeout("alert('A2')",1000);
        setTimeout(alert('A3'),1000);

        为什么第二行的代码执行的时候不延迟呢? 
        而第一行的代码,貌似就没有执行
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(4)
巴扎黑

没看明白题目的意思。三个setTimeout是同时执行的,然后根据各自的延时时间来执行function语句,因为

setTimeout("i=i+1;alert('A1')",1000);
setTimeout("alert('A2')",1000);

延时时间相同,所以两个语句同时执行(不过alert会阻断当前js执行所以弹窗还是分了先后。
如果你是想要第一句执行完成后延时1000ms再执行第二句,那需要在第一个setTimeout的函数体内调用第二个setTimeout语句。例如:

function setTimeout2(){
    setTimeout("alert('A2')",1000);
}
setTimeout("i=i+1;alert('A1');setTimeout2()",1000);
PHP中文网

先分析最后一行:

setTimeout(alert('A3'),1000);

这样写alert('A3')会立即执行,没有起到定时器的作用,除非把它放在匿名函数,或者向前面一样包裹成字符串(不推荐)。

前面两行代码起到了定时器的作用,js 会在一秒后把这两个回调函数加入到执行队列中,然后执行它们,理解这句话是关键所在。所以, 并不是说,过了一秒alert('A1'),然后静静的等一秒,再alert('A2'),而是,等一秒之后,它们会按照顺序同时执行。

PHP中文网

setTimeout()第一个参数应该是function才对,你这什么都往里面加,太奇怪了,

var a=setTimeout(function(){alert('A3')},5000);
大家讲道理

第一个参数是函数或者函数引用。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号