如何在提交事件的最后,在所有回调完成后调用函数?



有人可以告诉我,在所有提交事件回调完成后如何调用该函数?我有这样的东西,但我需要在提交回调的最后使用它。

$('#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');
});
});

(相当笨拙,简单地分配一个处理程序而不是多个处理程序要好得多(

最新更新