2012-02-22 87 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