gpt4 book ai didi

javascript - 如何让 jQuery 在事件发生后等待

转载 作者:行者123 更新时间:2023-12-03 07:04:21 24 4
gpt4 key购买 nike

我有一些使用 AJAX 的文本框,它们会在用户键入时处理用户键入的内容。问题是,他们打字后发生的过程是一个非常繁重的过程。无论如何,我可以让事件等待 500 毫秒左右,然后再再次处理该事件吗?假设我输入 a,然后在输入 bsdke 200 毫秒后。该事件只会处理传入的 a。假设我在输入 a 600 毫秒后输入 asdf。然后该事件将触发并处理 absdkeasdf,因为距离上次处理已经过去了 500 毫秒。

或者甚至,有没有一种方法可以使该事件在上一个触发的事件完成其正在执行的操作之前不会被触发?

这可能吗?当然最后坚持超时功能是行不通的,对吧?

 $('#selection1-3-4-a, #selection1-3-4-b, #selection1-3-4-c, #selection1-3-4-d, #selection1-3-4-e, #selection1-3-4-f').on('input', function (e) {
var url = "/ex.php";
$.ajax ({
//......

});

最佳答案

调整事件可能会很困难,以便用户获得良好的体验,并且在使用自动完成功能时不会向服务器发送大量请求。

我会这样做:该事件将等待 X 毫秒自行运行。如果事件再次触发,并且 X 毫秒尚未过去,则将延迟重置为 0。

让我们冷静地创建一个通用函数来执行此操作(无法测试它,它可能会被破坏):

function delayedEvent(eventHandler, delay) {
var lastTimeout = null;

return function () {
var that = this,
args= Array.prototype.slice.call(arguments).sort();

if (lastTimeout !== null)
window.clearTimeout(lastTimeout);

lastTimeout = window.setTimeout(function () {
eventHandler.apply(that, args);
}, delay);
};
}

$('... selector ...').on('event', delayedEvent(function () { ... your code ... }, 500));

关于javascript - 如何让 jQuery 在事件发生后等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36894842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com