Potrzebuję funkcję, która czeka, aż zmienna powstaje.Czekając aż istnieje zmienna z typeof powoduje nieskończoną pętlę
function wait(variable, callback) {
if (typeof variable !== "undefined")
callback();
else
setTimeout(function() {
wait(variable, callback);
}, 0)
}
Wywołanie tej funkcji z przykładowym kodem poniżej powoduje nieskończoną pętlę.
var a;
wait(a, function(){console.log('success')});
setTimeout(function(){a=1}, 1000)
Dlaczego?
Zmienne są przekazywane przez wartość, a nie przez odniesienie, więc po prostu przekazujesz bieżącą, niezdefiniowaną wartość w 'setTimeout'. – Barmar
Ty przechodząc wartość 'A', który zawsze będzie' undefined' – haim770