@rimlin

Как сделать, чтобы код выполнился после завершения setInterval?

Не могу разобраться, как сделать, чтобы код выполнился после завершения setInterval, если только не callback, чего не хочется. Например, так:

function someFunc () {
    var _this = this, interval;

    $.get('/path', data, function (res) {
        _this.output = res;
    });

    interval = setInterval(function () {
        if (_this.output) {
            clearInterval(interval);
        }
    }, 1000);

    return this.output;
}

Или есть другой способ вернуть в значение someFunc () полученную информацию res?
  • Вопрос задан
  • 2412 просмотров
Решения вопроса 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
api.jquery.com/jquery.ajax
Читайте про параметр async
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
$.get() - это асинхронный запрос, это значит что выполнение функции someFunc завершится раньше чем выполнится этот участок кода:
function (res) {
    _this.output = res;
}

И в вашем случае функция someFunction будет всегда возвращать undefined
Можно сделать так:
function someFunc () {
    return $.get('/path', data);
}

someFunc().then(function(res){
    тут обработка полученного результата
});


И почитайте тут
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы