AJAX回调非常慢
AJAX callback is super-slow?
我正在尝试AJAX,并成功地部署了一个简单的AJAX a同步函数,但当我将其更改为使用回调方法时,突然间,加载需要很长时间(大约10-15分钟…)。以下是立即执行的功能:
function ajaxf() {
var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200 && document.getElementById("icons")==null)
{
document.getElementById("text-12").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","http://some-url/ajax.php",true);
xmlhttp.send();
}
下面是使用回调函数的较慢迭代方式:
function ajaxf(url,cfunc) {
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
document.body.onscroll = function ajaxb() {
ajaxf("http://some-url/ajax.php",function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200 && document.getElementById("icons")==null)
{
document.getElementById("text-4").innerHTML=xmlhttp.responseText;
}
});
}
其他(可能)相关细节-ajax.php文件的重量仅为532 B,在我的本地测试服务器上,两者的运行或多或少相同,第一个函数在body标记中使用onscroll="ajaxf()"。。。
我觉得AJAX会更敏捷一点???
我解决了这个问题,多亏了@jasen的提示,我放了一个console.log(),并且能够像@jfriend00所说的那样看到滚动函数被放大了无数次。最初,我认为通过将"document.getElementById("icons")==null"作为条件,函数只会触发一次,但我当然错了,
所以解决方案是:在第一次执行后,通过在函数末尾添加"document.body.onscroll=null;"来重置onscroll操作。
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- Soundcloud Javascript SDK 3.0-回调无法读取属性'connectCallback
- 如何使用jqueryAJAX从页面中回调多个变量
- jquery Onclick函数带有导致双击的回调排序函数
- 在 chrome 中处理 array.sort(?) 回调的空字符串非常慢
- AJAX回调非常慢
- 非常基本的JavaScript回调/闭包结构
- Clojuescrapt ajax.core没有单独的处理程序/回调,代码中的流非常精确,就好像代码是同步的一样
- 为什么这个非常明确定义(在JSONLoader的回调中)的对象读为未定义?