Funkcja, która w bardzo prymitywny sposób czeka na pojawienie się oczekiwanego obiektu w bliżej nie określonym czasie. Czasami takie coś może się przydać jeśli inny skrypt tworzy obiekty i nie wiemy kiedy się pojawią.
var waitFor = function(obj, srcArr, fn, opt){
opt = opt || {t: 50};
(function callee(){
var tmp = obj;
var tid = setTimeout(callee, opt.t);
for (var i = 0; i < srcArr.length; ++i) {
if (typeof tmp[srcArr[i]] !== 'undefined') {
tmp = tmp[srcArr[i]];
} else {
return;
}
}
clearTimeout(tid);
fn(tmp, obj);
})();
};
Poniżej przykład użycia:
waitFor(window, 'abc.def'.split('.'), function(data, obj){
alert('jest: ' + data);
});
setTimeout(function(){
window.abc = {};
setTimeout(function(){
window.abc.def = 'obiekt/dane';
}, 1e3);
}, 1e3);
Brak komentarzy:
Prześlij komentarz