SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...

Как рекурсивно вызвать функцию, заданную в переменной?

Упрощенный код функции:

var func = function(items, errors) {
    if (items.length) {
        $.post(
            '/items/add/',
            {id: items.pop()},
            function (response) {
                if (typeof response.error != 'undefined') {
                    errors.push(response.error);
                } else {
                    // как осуществить вызов функции из переменной func (рекурсивный вызов)? 
                    ...(items, errors);
                }
            },
            'json'
        );
    } elseif (errors.length) {
        alert(errors.join(' '));
    }
};

func(new_items, []);

С JS я знаком посредственно, поэтому единственное что пришло в голову - передавать переменную, хранящую функцию, одним из параметров при вызове, т.е.:

var func = function(fself, items, errors) {
    ...
    fself(fself, items, errors);
    ...
};
func(func, new_items, []);

В крайнем случае можно задать имя функции:

function func(items, errors) {
    ...
    func(items, errors);
    ...
}
func(new_items, []);

Вопрос в том, можно ли как-то рекурсивно вызывать подобную анонимную функцию без явной передачи данной функции самой в себя?
  • Вопрос задан
  • 225 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
В смысле так?
var func = function funcSelf(items, errors) { 
     // тут всякий код
     funcSelf(); // вызываем, используя имя funcSelf, которое доступно только внутри функции
}
Ответ написан
Ваш ответ на вопрос

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

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