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

时间:2018-05-12 11:26:29

标签: javascript events javascript-events submit

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

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

问题是,还有其他回调在此之后触发。那么,如何在提交调用堆栈的最后添加处理程序? 谢谢。

1 个答案:

答案 0 :(得分:0)

如果tour.next();和其他回调是同步的,那么只需调用setTimeout即可在最后运行一个函数:

setTimeout(somethingToRunAtEnd);

并且在所有其他处理程序完成后运行。

如果他们是异步的,那么请确保他们返回Promise,然后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');
  });
});

(非常hacky,简单地分配一个处理程序而不是很多)