来源:蜘蛛抓取(WebSpider)
时间:2018-05-26 15:38
标签:
三国志11定军山触发
(/bs穨廢苼活)
(方言即文化)
(砂沫singalongsong)
(艾玛·鱼-最好的时光是用来浪费)
第三方登录:《荒野之息》呀哈哈完全收集攻略(900/900更新完毕) |& & & & 在一次工作中碰到setTimeout的一个大坑,在用setTimeout进行延时执行一个函数的时候,由于该函数需要传参,所以把它写成了&setTimeout(fn(data),1000)&,详细如下代码:
function hello(id){
alert(id);
setTimeout(hello("username"),3000)
&结果函数立即执行了,根本没有延时,很费解,查了下资料,知道setTimeout的正确写法是setTimeout(fn,3000)或者setTimeout(function(){ //... },3000),隐隐知道我这样写有哪点不对,可是说不明白我这样写具体问题在哪里,今天看其他资料的时候突然想到这个问题,就下决心要好好看看这个问题。
& & & &首先,发现setTimeout与JS的运行机制有一定关系,JS是单线程的,在有多个函数或者其他需要运行的时候,会按顺序一个接着一个执行,也就是说如果在setTimeout(fn,delay)之后或者之前有其他要执行的函数或者其他什么的时候,会按顺序执行所有。其次,setTimeout本身(相当于原型上,不知道这样说对不对)是没有fn(data)后面所带的(data)(执行切带参数)的。从以上阐述一分析,JS的运行机制是按顺序,当然对于setTimeout来说更特殊却也很简单,对于setTimeout,浏览器会先执行其他,再执行setTimeout。也许你会说是因为有delay,那么看下面这段代码:
function test () {
setTimeout(function () {
a=5 alert(a) },0) alert(a) } test () alert(0)
此时,会依次弹出1,0,5。此时延时为0,setTimeout仍然是最后执行的。说明浏览器对setTimeout的解析就如我所说一样,先执行其他立即执行的程序,此外也要注意这个里面写出来的所谓的delay时间可能大于等于实际延迟时间。因此对于setTimeout(fn(data),3000)&,会立即执行fn这个函数而没有任何延迟。针对阐述二,我暂时没办法查到setTimeout的运行机制或者说&原型&上的问题,因此只能讲一个根据这个&原型&理论作出的针对这个问题的解决方案,即改写setTimeout&原型&,具体见如下代码:
function hello(id){
alert(id);
var _sto = setT
window.setTimeout = function(callback,timeout,param){
var args = Array.prototype.slice.call(arguments,2);
var _cb = function(){
callback.apply(null,args);
}
_sto(_cb,timeout);
window.setTimeout(hello,3000,"userName");
& & 另外一个解决方案:
function hello(id){
alert(id);
setTimeout('hello("username")',3000)
& & &感觉自己对setTimeout的运行机制内部即我所谓的&原型&方面了解还不是很好,希望看到此篇博客的同学可以在文章下方留言交流,希望和大家一起进步!
阅读(...) 评论()这个小风车呀哈哈怎么触发啊?【塞尔达传说吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:110,806贴子:
这个小风车呀哈哈怎么触发啊?
这个小风车呀哈哈怎么触发啊?
站到风车边上在你的视线范围内会有可以射下来的东西,全部射掉就出来了
记得好像是要站在上面射一个很远的气球,需要一把远程弓,我当时用古代弓射的
贴吧热议榜
使用签名档&&
保存至快速回贴求问这个呀哈哈怎么触发啊【荒野之息吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:4,448贴子:
求问这个呀哈哈怎么触发啊
求问这个呀哈哈怎么触发啊
看看旁边的是什么树,这里不是香蕉就是榴莲了吧?
放个香蕉就行吧
两个雕像,有一个身前放着一个榴莲,你一定是给捡起来了,应该往另一个的身前也放一个榴莲,保持一致,就行了。话说,这个问题也问的话,卡卡利科村老太婆家门口有五个放苹果的雕像,也是个呀哈哈,别说你也没发现……我现在找到220个呀哈哈,大概有四五个是这种要补足祭品保持一致的,一般都是放苹果,这个榴莲是个例。
贴吧热议榜
使用签名档&&
保存至快速回贴