我有以下代码,我想异步运行,但日志显示它们正在同步运行。JQuery AJAX请求表现为同步不明原因
$(".widget").each(function() {
// snip - url, def, and tempParams defined here
$.ajax({
url: url,
dataType: "jsonp",
type: "POST",
data: {params: tempParams},
success: function(data) {
var st = new Date().getTime();
console.error("Start " + def.name + " @" + st);
doSomething(data);
var et = new Date().getTime();
console.error("End " + def.name + " @" + et);
console.error("Duration " + def.name + " " + (et-st) + " ms.");
}
});
控制台输出清楚地显示了成功职能,以便执行,而不是异步:
Start f1 @1300738891705
End f1 @1300738891744
Duration f1 39 ms.
Start f2 @1300738892746
End f2 @1300738893280
Duration f2 534 ms.
Start f3 @1300738893282
End f3 @1300738893303
Duration f3 21 ms.
Start f4 @1300738893305
End f4 @1300738893306
Duration f4 1 ms.
Start f5 @1300738893484
End f5 @1300738895609
Duration f5 2125 ms.
的思考?我觉得这一定是我忽略的事情。
我知道这是愚蠢的。我在ajax调用之外添加了调试代码(就像我应该做的那样),它们确实是异步执行的。我正在想象他们会在他们自己的线程中执行,这导致了我对错误的理解。感谢您清理东西! – 2011-03-21 21:01:07