Как вызвать функцию в самом конце события submit, после завершения всех обратных вызовов? - PullRequest
0 голосов
/ 12 мая 2018

Может кто-нибудь сказать мне, пожалуйста, как я могу вызвать функцию после выполнения всех обратных вызовов события submit?У меня есть что-то вроде этого, но мне нужно, чтобы это было в самом конце отправки обратных вызовов.

$('#form').on('submit', function () {
    tour.next();
});

Проблема в том, что есть другие обратные вызовы, которые срабатывают после этого.Итак, еще раз, как я могу добавить обработчик в самом конце стека вызовов отправки?СПАСИБО.

1 Ответ

0 голосов
/ 12 мая 2018

Если tour.next(); и другие обратные вызовы являются синхронными, просто вызовите setTimeout, чтобы запустить функцию в конце:

setTimeout(somethingToRunAtEnd);

и он запустится после завершения всех других обработчиков.

Если они асинхронные, убедитесь, что они возвращают Обещания, а затем Promise.all для каждого из них:

let promises;
$('.xxx').on('click', function() {
  promises = [alert('callback one')];
});
$('.xxx').on('click', function() {
  promises.push(alert('callback two'));
  Promise.all(promises).then(() => {
    console.log('all asyncs finished');
  });
});

(довольно забавно, гораздо лучше просто назначить один обработчик, чем много)

...