Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器如何处理;“设置间隔”;及;事件侦听器";不同地_Javascript_Angularjs_Setinterval_Event Listener - Fatal编程技术网

Javascript 浏览器如何处理;“设置间隔”;及;事件侦听器";不同地

Javascript 浏览器如何处理;“设置间隔”;及;事件侦听器";不同地,javascript,angularjs,setinterval,event-listener,Javascript,Angularjs,Setinterval,Event Listener,所以我想知道。此代码之间的区别是什么: windowHeight = window.innerHeight; windowWidth = window.innerWidth; setInterval(function(){ if(window.innerHeight != windowHeight || window.innerWidth != windowWidth){ windowWidth = window.innerWidth; windowH

所以我想知道。此代码之间的区别是什么:

windowHeight = window.innerHeight;
windowWidth = window.innerWidth;
setInterval(function(){
    if(window.innerHeight != windowHeight || window.innerWidth != windowWidth){
         windowWidth = window.innerWidth;
         windowHeight = window.innerHeight;
         // do something here
    }
}, 10)
这个密码呢

document.addEventListener('resize', function(){
    // do something here
})
我知道后一种方法是最好的做法。但我想知道的是,浏览器处理事件侦听器的方式与每隔一段时间检查事件更改的方式有什么不同?如果浏览器的工作方式不同,那么如何实现呢


还有,创建自己的倾听者的最佳方式是什么?例如,创建angular的
$watch()
函数,但使用纯Javascript。

因为事件侦听器仅在动作发生时触发,而不是不断检查更改??这就像每隔几秒钟就往窗外看一眼披萨店老板,而不是等他按门铃。他们完全不同。setInterval每隔
x
ms调用一个函数,而添加这样的事件侦听器将在调整文档大小时触发回调函数浏览器不需要检查窗口是否已调整大小,操作系统会在发生此情况时通知浏览器应用程序。@Roy“resize”浏览器非常主动地触发事件。如果您在“resize”处理程序中执行DOM查询和DOM更新,那么您的客户机资源将非常繁重。最好引入一些定时延迟,以便通过使用
setTimeout()
等只以某个最大频率执行更新。@Roy门铃是操作系统处理输入设备,耳朵是Javascript事件侦听器代码(这就是为什么它被称为“侦听器”)。