gpt4 book ai didi

jquery - 尽管针对不同的请求, Controller 操作似乎是同步的?

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

我的印象是下面的代码应该异步工作。

但是,当我查看 firebug 时,我看到请求是异步触发的,但结果是同步返回的:

Requests are handled synchronously

Controller :

[HandleError]
public class HomeController : Controller
{
public ActionResult Status()
{
return Content(Session["status"].ToString());
}

public ActionResult CreateSite()
{
Session["status"] += "Starting new site creation";

Thread.Sleep(20000); // Simulate long running task

Session["status"] += "<br />New site creation complete";

return Content(string.Empty);
}
}

Javascript/jQuery:

$(document).ready(function () {

$.ajax({
url: '/home/CreateSite',
async: true,
success: function () {
mynamespace.done = true;
}
});

setTimeout(mynamespace.getStatus, 2000);
});

var mynamespace = {

counter: 0,
done: false,

getStatus: function () {

$('#console').append('.');

if (mynamespace.counter == 4) {
mynamespace.counter = 0;

$.ajax({
url: '/home/Status',
success: function (data) {
$('#console').html(data);
}
});
}

if (!mynamespace.done) {
mynamespace.counter++;
setTimeout(mynamespace.getStatus, 500);
}
}
}

其他信息:

  • IIS 7.0
  • Windows 2008 R2 服务器
  • 在 VMWare 虚拟机中运行

谁能解释一下这个吗? Status 操作是否应该立即返回而不是等待 CreateSite 完成?

<小时/>

编辑:

如何启动长时间运行的进程并仍然获得状态更新?

最佳答案

Web 服务器一次仅运行每个用户的一个请求。请求根据 session ID 进行排队。

(这使得构建 Web 应用程序变得更加容易,因为您不必考虑两个线程同时访问同一用户的数据的可能性。)

关于jquery - 尽管针对不同的请求, Controller 操作似乎是同步的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4680707/

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