gpt4 book ai didi

javascript - 如何使ajax请求异步?

转载 作者:行者123 更新时间:2023-11-29 21:52:33 25 4
gpt4 key购买 nike

我想使一些 ajax 请求异步。 比如两个Ajax,第一个Ajax不需要完成,第二个请求就可以了,

$.ajax({
url: "urlone",
async: true,
complete: function () {
console.log("1");
},
type: "post",
dataType: "json"
});


console.log("2");

$.ajax({
url: "urltwo",
async: true,
complete: function () {
console.log("3");
},
type: "post",
dataType: "json"
});

在 urlone 后台,我让线程休眠 5 秒,在 urltwo 后台我立即返回 json。

我写了这个,但是没有效果,我想要控制台打印2个3个1

但是,实际上,它打印2个1个3

这表明只有第一个请求返回后才能触发第二个请求

如何解决这个问题??

2月6日添加:感谢您的热情解答。我的服务器端是 C#在 urlone我写了

JsonModel  xx=new JsonModel(){.......};   //as you known
System.Threading.Thread.Sleep(5000);
return Json(xx);

在 urltwo 中我写了

JsonModel  xx=new JsonModel(){.......};   //as you known
return Json(xx);

就是这样!

我想要这个是因为我在urlone中执行了一个非常耗时的操作,当我从urlone回来的时候,前面已经失去响应,即使我设置了一个非常大的ajax等待时间。所以我想查询urlone中的操作是否由请求urltwo完成,urltwo是为查询数据库完整字段标志而设计的对于urlone中的操作。这是我的想法。

但是今天,我发现了一个新问题。后台线程休眠时间长了,回json数据到前台,前台可以响应,做了一些js功能,但是当我在urlone后台执行一个非常耗时的操作,返回到前台,前台没有响应.一定有一些我没有意识到的问题,所以

最佳答案

您说过要使请求 异步;它们是(并且您不需要 async: true,这是默认设置)。

this show the second request can be trigged only after the first request return

不,它表明第一个在第二个之前完成,而不是直到第一个完成才触发第二个。

如果您在重复测试中可靠地看到 2 1 3,则说明以下两种情况之一:

  1. 第一个请求本质上比第二个请求处理得更快 — 但如果您将 urlone 的处理暂停五秒钟(并且您已经验证那个),那就不是这个了

  2. 服务器正在序列化它们

服务器可能出于多种原因将它们序列化;这些原因取决于您使用的服务器端技术和配置。例如,一些服务器将序列化对同一“ session ”中动态生成的内容的请求。

关于javascript - 如何使ajax请求异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28317884/

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