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的延时效果;

第三种方式:通过这样的匿名函数调用,可以满足我们的须要,即攻克了延时的问题。也攻克了变量可见域的问题。

 


posted on 2017-08-10 10:16  ljbguanli  阅读(324)  评论(0编辑  收藏  举报