我想知道是否有一种简单的方法可以在指定的时间段内延迟点击事件的处理。例如我们可以有
$('#someElement').on('click', 'a', function(event) {
var duration = 1000;
someAsynchronousFunction(); // Start as soon as click occurs
... // Code to delay page transition from taking place for duration specified
});
因此,在这种情况下,将保证异步函数有一定的运行时间。如果它还没有完成它在这个时间的工作,我不会在意并且只想继续页面转换。我知道有可能完成一些接近的事情
event.preventDefault();
...
setTimeout(function(){
window.location = $(this).attr('href');
}, duration);
但这仅在被单击的链接进入整页时才有效。我也希望能够处理用于 ajax 调用的链接(不更改 url)。
我注意到 mixpanel 库有一个函数 track_links 似乎可以完成页面转换的延迟,尽管该函数似乎不适用于我提到的对 ajax 链接的支持。
任何帮助都会很棒!谢谢。
编辑:所以我想我的问题并不完全清楚,所以我将尝试在下面提供更多详细信息。
我不在乎异步函数是否完成运行!我只想保证它有一定的执行时间,之后我不在乎它是否完成,而是更愿意继续进行页面转换。
即我想延迟的不是异步功能的开始,而是页面转换的开始。单击发生后,异步功能将立即开始运行。
希望这更清楚一点!