我有很多其他人的代碼,我很抱歉,由於社會原因無法重構。目前,服務器爲此代碼生成一個變量,並通過將其填充到腳本塊中將其與頁面一起傳遞。不幸的是,出於性能方面的原因,我現在希望創建這個變量,直到頁面加載完成,並且如果我可以跳過創建這個變量,甚至更好。我可以製作一個依賴異步調用的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%的隱喻。頁面中需要顯示變量的所有部分已經優雅地失敗了,所以告訴他們「等待這個變量完成加載」並不是一個問題。我只是不知道如何,因爲我無法觸及部分內容代碼在哪裏最適合改變它。
這聽起來像你使用JSONp,這很好。發送請求時必須指定回叫名稱,但不能推遲。這不應該成爲一個問題,因爲你可以生成一個隨機名稱。你能告訴我們爲什麼你認爲你需要推遲嗎?您始終可以使用XMLHTTPRequest而不是JSONp。 – Halcyon 2015-03-13 14:42:24
這個問題太模糊了。請舉一些具體的例子。 – JLRishe 2015-03-13 14:43:25
這聽起來像是你試圖添加阻塞I/O到異步設置。如果這是你的_refactor_的重點,我建議你和你的開發者有一個很好的交談。 – Halcyon 2015-03-13 14:45:52