Есть ли событие появления переменной?
Люди, что вы зациклились на jQuery?
Можно ведь сделать проще. Предположу, что у вас что-то типа того:var done = false;
var result = "";
obj.ondone = function(e) { // здесь любое событие
    done = true;
    result = e.result;
    // хотим отловить этот момент
};
Теперь смотрите: если переменная объявлена через var, то только так:var func = function(callback) {
    obj.ondone = function(e) {
        callback(e.result);
    };
};
func(function(result) {
    alert(result);
});
Можно еще промисы прикрутить и т. п., но Вы меня поняли.
Если переменная глобальная, лучше использовать вариант выше, но в крайнем случае так:_done = false;
_result = "";

function func() {
    obj.ondone = function(e) {
        _done = true;
        _result = e.result;
    };
}

setTimeout(function f() {
    if(_done) {
        // готово
    } else {
        setTimeout(f, 500); // каждые 0.5 с
    }
}, 500); // каждые 0.5 с
func();
спасибо, но блин я не смог понять как это может работать без settimeout(
У меня как-то не так. Есть функция, которая ждёт появления глобальной переменной, чтобы выполниться. Можно в примере показать ту часть кода, которая будет повторяться, а не завершится сразу, если переменная false?
UPD: не то, потому что ещё такой момент: Считывать переменную done нужно несколько раз, а код, который формирует переменную done должен выполниться только один раз.