Если 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');
});
});
(довольно забавно, гораздо лучше просто назначить один обработчик, чем много)