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

第三种方式:通过这种匿名函数调用,能够满足我们的需要,即解决了延时的问题,也解决了变量可见域的问题。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值