首页 > 代码库 > requireJS中使用setTimeout和setInterval遇到的问题和解决方式
requireJS中使用setTimeout和setInterval遇到的问题和解决方式
javascript中与定时相关的API有setTimeout()和setInterval(),这2个函数功能不同,但是使用方式是一样的。
javascript中下面的写法,相当于是定义了一个密闭空间,在其中定义的变量和函数都是私有,只能本模块内访问。
(function(){ var msg = "msg"; })(); //报错 alert(msg);
以前我写javascript,都是使用setTimeout("say(‘aty‘);",1000);这种方式,由于say是全局函数,所以这样写能够正确运行。最近一个项目使用了requireJS框架,这要求我们要用模块化的方式编写javascript。用之前的方式,使用setTimeout就行不通了。
(function(){ function say(msg) { alert(msg); } // 第1种方式 //setTimeout("say('aty');",1000); // 第2种方式 //setTimeout(say("aty"),1000); // 第3种方式 setInterval(function(){ say("aty"); },1000); })();
第一种方式会报错,因为say函数仅仅在模块内部可见,setTimeout看不见;
第二种方式:代码会立即执行,没有到达setTimeout的延时效果;
第三种方式:通过这种匿名函数调用,能够满足我们的需要,即解决了延时的问题,也解决了变量可见域的问题。
requireJS中使用setTimeout和setInterval遇到的问题和解决方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。