Javascript 仅在另一个事件的回调完成后才在事件中运行回调

Javascript 仅在另一个事件的回调完成后才在事件中运行回调,javascript,turbolinks,Javascript,Turbolinks,我正在使用一个库,它使用ajax检索我的网站的内容。库为内容何时加载以及何时加载完成提供侦听器 我的代码大致如下: document.addEventListener('turbolinks:click', function(e) { // Possibly does some loading or animations... } document.addEventListener('turbolinks:load', function(e) { // Code here should

我正在使用一个库,它使用ajax检索我的网站的内容。库为内容何时加载以及何时加载完成提供侦听器

我的代码大致如下:

document.addEventListener('turbolinks:click', function(e) {
  // Possibly does some loading or animations...
}

document.addEventListener('turbolinks:load', function(e) {
  // Code here should start running after code in 'turbolinks:click' is finished.
}
我希望实现的是,
turbolinks:load
回调中的代码应该只在
turbolinks:click
中的代码完成所有操作后运行

因此,例如
turbolinks:click
会触发一个需要三秒钟加载的动画。如果
turbolinks:load
事件在这三秒钟内触发,它应该等到这三秒钟过去,如果在这段时间后触发,它可以立即运行


我希望这是有道理的,有人能指引我正确的方向,谢谢!:)

都是fn。是事件触发的,彼此不依赖。那么,为什么一方希望一方依赖另一方呢?一个简单的例子是:“单击”使用CSS动画淡出网页,“加载”使其淡入“加载”可以在“单击”的CSS动画完成之前触发,但我不希望它在第一次完全淡出之前淡入。那么,什么将触发第二个fn(加载)?只需使用变量。在开始时,第一个函数的更改变量
lock=1
,在结束时,它将更改为
lock=0
。第二个函数应该检查
lock
,如果
lock==1,则等待。简单的解决方案,但可以工作(我不知道整个情况;)。@Sylogista您不能在javascript中等待它的单线程。都是fn。是事件触发的,彼此不依赖。那么,为什么一方希望一方依赖另一方呢?一个简单的例子是:“单击”使用CSS动画淡出网页,“加载”使其淡入“加载”可以在“单击”的CSS动画完成之前触发,但我不希望它在第一次完全淡出之前淡入。那么,什么将触发第二个fn(加载)?只需使用变量。在开始时,第一个函数的更改变量
lock=1
,在结束时,它将更改为
lock=0
。第二个函数应该检查
lock
,如果
lock==1,则等待。简单的解决方案,但可以工作(我不知道整个情况;)。@Sylogista您不能在javascript中等待它的单线程。