gpt4 book ai didi

JQuery AJAX 请求由于未知原因而表现同步

转载 作者:行者123 更新时间:2023-12-01 08:24:02 25 4
gpt4 key购买 nike

我有以下代码,我想异步运行,但日志显示它们正在同步运行。

$(".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 而言,因此 JQuery 只是意味着 HTTP 请求消息将被发送到 Web 服务器,而不会在客户端造成任何延迟。这些请求很可能会按顺序发布到服务器,但我认为不能保证这一点。我认为您正在考虑线程......

当浏览器的 JavaScript 解释器等待 AJAX 响应时,同步调用可能会导致客户端延迟。

举一个简单的例子,假设您有一个 AJAX 调用来获取给定的美国各州的税率。如果是同步调用,则结帐工具将停止计算,并且任何用户与 Javascript 的交互都不会产生响应,直到收到 AJAX 响应(带有税率)。

在上面的异步情况下,您可以定义一个回调函数,一旦收到 AJAX 响应,该函数将继续计算最终结账价格。

关于JQuery AJAX 请求由于未知原因而表现同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383247/

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