2015-03-13 109 views
0

我有很多其他人的代碼,我很抱歉,由於社會原因無法重構。目前,服務器爲此代碼生成一個變量,並通過將其填充到腳本塊中將其與頁面一起傳遞。不幸的是,出於性能方面的原因,我現在希望創建這個變量,直到頁面加載完成,並且如果我可以跳過創建這個變量,甚至更好。我可以製作一個依賴異步調用的JavaScript getter嗎?

因此,這是古老的「我怎麼阻止?」問題的JavaScript,但因爲我不能重構代碼,我不能只是進入並用承諾代替變量的每個實例。鑑於對攔截JavaScript等問題如何往往被回答

,我不認爲找到一種方法,使一個getter塊,直到AJAX調用完成是正確的答案。我接受所有建議,但我希望這是一個具體問題。

謝謝。

編輯:例子。這裏的代碼,我不能碰,也,我不能觸摸它:

if (globalObject.someVariable) { 
    doStuff(); 
} else { 
    doOtherStuff(); 
} 

這裏是服務器放在頁面:

<script type='text/javascript'> 
jQuery.extend(globalObject, { 
    "someVariable" : true; 
} 
</script> 

那我可以觸摸。我可以做任何我想要的東西。該示例僅顯示true或false,但生成true或false是我頁面加載時間的20%的隱喻。頁面中需要顯示變量的所有部分已經優雅地失敗了,所以告訴他們「等待這個變量完成加載」並不是一個問題。我只是不知道如何,因爲我無法觸及部分內容代碼在哪裏最適合改變它。

+0

這聽起來像你使用JSONp,這很好。發送請求時必須指定回叫名稱,但不能推遲。這不應該成爲一個問題,因爲你可以生成一個隨機名稱。你能告訴我們爲什麼你認爲你需要推遲嗎?您始終可以使用XMLHTTPRequest而不是JSONp。 – Halcyon 2015-03-13 14:42:24

+1

這個問題太模糊了。請舉一些具體的例子。 – JLRishe 2015-03-13 14:43:25

+2

這聽起來像是你試圖添加阻塞I/O到異步設置。如果這是你的_refactor_的重點,我建議你和你的開發者有一個很好的交談。 – Halcyon 2015-03-13 14:45:52

回答

0

裝入JSONP文件ondocumentready,或當你需要它。

相關問題