有人可以告诉我,在所有提交事件回调完成后如何调用该函数?我有这样的东西,但我需要在提交回调的最后使用它。
$('#form').on('submit', function () {
tour.next();
});
这样做的问题是,在此回调之后还有其他回调触发。那么,如何在提交调用堆栈的最末尾添加处理程序?
如果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');
});
});
(相当笨拙,简单地分配一个处理程序而不是多个处理程序要好得多(