2012-02-22 83 views
1

我有一个奇怪的经历。 关于ajax调用的成功,我在DOM上做了大量的计算和处理,一切都尽可能平滑。 接下来,我将成功编写的整个代码移到一个单独的javascript函数中,该函数又在ajax的成功部分上调用。 现在我看到执行该功能的时间滞后1-2秒。内联代码是否可能比函数调用更快?Javascript调用函数或内联代码?

编辑 示例代码:

$.ajax({ 
     url: '/apps/project/controller/load_data', 
     method: 'get', 
     dataType: "json", 
     data: {}, 
     success: function(data) { 
      //Parse JSON (Huge Data) and insert into DOM 
}}); 

第二种方法我没有

$.ajax({ 
     url: '/apps/project/controller/load_data', 
     method: 'get', 
     dataType: "json", 
     data: {}, 
     success: function(data) { 
      populate_timeline(data) 
}}); 

function populate_timeline(json){ 
//Parse JSON (Huge Data) and insert into DOM 
} 
+3

调用函数不应导致任何可见的性能滞后。你能发表一些展示你的问题的示例代码吗? – casablanca 2012-02-22 04:26:31

+0

请包含代码示例或jsFiddle的链接,以便我们可以看到问题。 – JohnFx 2012-02-22 04:27:53

+0

我已经包含了代码的骨架。它的简单JSON解析和填充DOM中的数据 – phoenixwizard 2012-02-22 04:37:34

回答

2

一个建议是不要通过使用匿名通加剧你的问题。您应该只能做success: populate_timeline,因为函数是JavaScript中的第一个对象。你可能必须确保populate_timeline在ajax中被引用之前被声明,我不知道你的所有代码是如何布局或调用的。

我最近优化了一个脚本,发现内嵌一个函数调用对性能的影响很小。这是执行一些画布动画的代码,其setInterval时间非常短,因此函数调用每秒钟会执行很多次。

你回去了,并确保将以前内置的代码移到它自己的功能只有你做的事情?不用考虑其他更改也很容易。此外,如果您在本地计算机上运行此代码用于开发目的,请确保它不仅仅是ajax调用速度慢于函数调用。也许你现在正在运行一些其他CPU繁重的进程,它并没有运行得更早,并且正在减慢ajax响应速度?

+0

正在宣布退出前会有什么区别? – phoenixwizard 2012-02-22 04:52:27

+0

不,但取决于您的整体代码结构,它可能只是错误,这是我提及它的唯一原因。 – Endophage 2012-02-22 04:56:29

+0

我将尝试在ajax之前声明该函数。也许这会有所作为。是的,我认为避免匿名传递可能会有所帮助。我会尽力回复我的结果:) – phoenixwizard 2012-02-22 05:04:41