如果你的變量來自另一個功能(也許從另一個範圍內),那麼你可以傳遞一個回調,並且當第二函數執行回調提供它的變量。您無需等待什麼時候會存在,但你會等到第二腳本提供爲你。
//in the second script:
var varIWant = 'foo'
function fromSecondScript(callback){
callback(varIWant);
}
//in the first script:
function fromFirstScript(){
fromSecondScript(function(theVar){
//"theVar" in this function scope is "varIWant" from the other scope
})
}
另一種方式來做到這一點是必須事先定義爲聚集回調裝載腳本,並打電話給他們,一旦他們的變量設置:
var aggregator = (function(){
var stored = {};
return {
//adds a callback to storage
addCallback : function(varName,callback){
if(!stored.hasOwnProperty(varName)){
stored[varName] = [];
}
stored[varName].push(callback);
},
//executes stored callbacks providing them data
execute : function(varName,data){
if(stored.hasOwnProperty(varName)){
for(var i=0;i<stored[varName].length;i++){
stored[varName][i](data)
}
}
}
}());
//in the first script add callbacks. you can add any number of callbacks
aggregator.addCallback('VarExists',function(theVar){
//do what you want when it exists
});
aggregator.addCallback('VarExists',function(theVar){
//another callback to execute when var exists
});
//in the second script, execute the callbacks of the given name
aggregator.execute('VarExists',theVarYouWantToShare);
什麼樣的事件定義你的變量等待? – m90 2012-04-17 09:03:45
變量如何使它成爲*盛大入口*?它來自ajax結果嗎?或其他功能? – Joseph 2012-04-17 09:07:17
它只是在單獨的JS文件執行的變量,第一個被執行的腳本是在一個單獨的js文件,並第一次加載變量之前。第二個腳本產生的變量和動態生成,這就是爲什麼我需要知道變量是否已經存在 – 2012-04-17 09:08:50