Люди, что вы зациклились на 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();