как вариант что то вроде этого)
var Ctrl = function (condition) {
var self = this;
this.condition = condition;
this.result = null;
this.init = function () {
this.check();
};
this.check = function () {
$.getJSON('/path/to/file', {param1: 'value1'}, function(data, textStatus) {
if (data.result !== self.condition)
self.check();
else
self.result = data.result;
});
};
this.getResult = function () {
return this.result;
};
this.init();
}
var condition = 'условие для ответа';
var controller = new Ctrl(condition);
var result = null;
var myInterval = setInterval(function() {
result = controller.getResult();
if (result) {
console.log('ожидаемый ответ: ', result);
clearInterval(myInterval);
}
}, 4000);