Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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 JQuery在哪里调用.fadeIn和.fadeOut()的setInterval?_Javascript_Jquery - Fatal编程技术网

Javascript JQuery在哪里调用.fadeIn和.fadeOut()的setInterval?

Javascript JQuery在哪里调用.fadeIn和.fadeOut()的setInterval?,javascript,jquery,Javascript,Jquery,这里是一个用于fadeIn()的链接,但由于某些原因,它没有链接到custom() 另外,作为第二个问题,如何将所有这些代码概念化……有这么多函数调用,我甚至无法猜测调用.fadeIn()或.fadeOut()时实际运行了多少代码 例如: fadeIn()调用animate()哪个调用speed()哪个调用extend() 第三个问题:这是面向对象编程吗 谢谢。它没有使用setTimeout(),而是使用setInterval(),它位于custom()中,在animate()方法的底部调用 这

这里是一个用于fadeIn()的链接,但由于某些原因,它没有链接到custom()

另外,作为第二个问题,如何将所有这些代码概念化……有这么多函数调用,我甚至无法猜测调用.fadeIn()或.fadeOut()时实际运行了多少代码

例如:

fadeIn()
调用
animate()
哪个调用
speed()
哪个调用
extend()

第三个问题:这是面向对象编程吗


谢谢。

它没有使用
setTimeout()
,而是使用
setInterval()
,它位于
custom()
中,在
animate()
方法的底部调用

这里有一个很好的教程:

如本教程所述,
setTimeout()
将事件安排在调用
setTimeout()
函数后的一定时间内发生。问题是,调度函数运行需要时间,因此下一个超时将在第一个超时的延迟和执行代码所需的时间之后进行调度

如果您想要:

100ms : function x called 
200ms : function x called 
300ms : function x called 
400ms : function x called
而你做到了:

function x(){
    setTimeout( x , 100);
}
setTimeout( x , 100);
将要发生的是:

100ms : function x called
first calls execution time + 200ms : function x called
second calls execution time + first calls execution time + 300ms : function x called
third calls execution time + second calls execution time + first calls execution time + 400ms : function x called
所以你会:

function x(){

}
setInterval( x , 100);

毫无疑问,这是一个面向对象编程。函数式编程是完全不同的(通常看起来也非常不同,搜索
python
haskell
)。我想你指的是“命令式编程”(比如
C
),它不是函数式编程,但也没有对象


jQuery还支持继承,这类似于JavaScripts本机原型继承。

setInterval通常是一个不好的选择。这是因为一旦设置了间隔,它将尝试每N毫秒执行一次,而不管现有线程如何运行——因此,如果您的浏览器已经遇到了一些严重问题,那么setInterval将增加这一问题。对于使用setInterval,尤其是对于较旧的、线程意识较低的浏览器,您必须仔细考虑。更多信息请点击此处:

setTimeout通常更好,因为您只在流程完成时排队等待下一个超时-类似这样的方式有时更好:

function foo(params) {
  // do stuff here that might block or take time
  setTimeout(function() {
      foo(params);
  }, 1234);
}