XMLHttpRequest点击太多-脚本崩溃(JavaScript)
XMLHttpRequest too many clicks - script crashes (JavaScript)
我有一个问题与以下JavaScript函数:
function blablabla(str) {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp_move = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp_move = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp_move.onreadystatechange = function() {
if (xmlhttp_move.readyState == 4 && xmlhttp_move.status == 200) {
document.getElementById("inventory").innerHTML = xmlhttp_move.responseText;
}
}
xmlhttp_move.open("GET","/m/inventory.php?id="+str,true);
xmlhttp_move.send();
}
当用户不停地点击太多次,没有等待重新加载,他看到网站崩溃(我的意思是样式改变…因为我猜函数返回空结果到DIV)这是解决这个问题的聪明方法?我读过一些关于使用open(…), false)但我想保持异步功能
我倾向于"揭穿"你的blablabla
函数。
脱包是一种防止函数被快速连续多次调用的技术。例如,"这个函数每秒只能被调用一次"。时间阈值由你决定。
下面是一个简单的debounce函数,用纯JavaScript编写(不依赖库):function debounce(fn, threshold) {
threshold = threshold || 300;
var timer;
return function() {
if (!timer) {
fn.apply(this, arguments);
}
clearTimeout(timer);
timer = setTimeout(function() {
timer = null;
}, threshold);
};
};
使用率(阈值设置为1秒):
debounce(blablabla, 1000);
的例子:
var el = document.getElementById('myid');
el.addEventListener('click', debounce(blablabla, 1000));
进一步阅读:
- http://davidwalsh.name/function-debounce
- 有人能解释一下"脱线"吗?函数
相关文章:
- Javascript-食物总数数组崩溃
- javascript audio currentTime使一些浏览器崩溃
- Javascript播放音频后其他没有音频崩溃
- Javascript筛选器数组抛出错误并崩溃
- 试图修复一个倒计时计时器问题,该问题导致计时器运行,然后在使用Javascript时崩溃约10秒
- 浏览器11上的Javascript location.href崩溃
- Chrome在尝试从Javascript修改CSS3动画时崩溃
- Javascript游戏与循环崩溃浏览器
- Javascript正则表达式文件类型崩溃chrome
- IE11在基于Kendo/JavaScript的web应用程序中崩溃
- 如何使用Javascript防止页面滚动上的剑道下拉列表崩溃
- JavaScript崩溃iPad浏览器
- 浏览器在尝试获取数字的最大素因数(Javascript)时崩溃
- 高效的Javascript组合函数,不会使浏览器崩溃
- JavaScript 冻结/崩溃在 Chrome 中
- AJAX 查询工作 50+ 次,然后崩溃 JavaScript
- JavaScript代码首先使用setTimeout工作,但随后崩溃或不起作用
- 基本的JavaScript使网站崩溃
- 从 JSON(db 查询结果)加载大型 javascript 数组而不会使页面崩溃
- XMLHttpRequest点击太多-脚本崩溃(JavaScript)