@Aricus

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

Упрощённо говоря две функции, запускаемых событиями:
function bondListeners(thisListik) {
    // Первая функция
    ...
    bondListeners(affected);
}
$(document).ready(function () {
    $('[data-afftype]').on('change', function (e) {
        bondListeners(this);
    });
    $('.vis-ddctype, .vis-cattype').on('change', function (e) {
        // Вторая функция
        ...
    });
});

Они могут быть применены к разным элементам, а могут - к одному и тому же, то есть независимы друг от друга. Причём, первая функция может применяться несколько раз по каскаду.
Мне нужно, чтобы, когда эти две функции вызываются одним изменением, вторая функция запускалась только после того, как отработает весь каскад первой функции, так как вторая функция использует значения, получаемые в результате работы первой.
Как этого добиться, кроме отложения работы первой функции через setTimeout на время, заведомо достаточное для отработки этого каскада? Этот вариант выглядит некрасиво для пользователя.
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
Хранить стек обрабатываемых первой функцией елементов в WeakSet или Set и если елемент присутствует в этом списке не запускать вторую. Чтобы сделать так, чтобы вторая функция ждала, пока елемент уйдет из списка гугли рекурсию, внимательно гугли, потому что можно вечный цикл сделать
Ответ написан
Ваш ответ на вопрос

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

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