为什么我在进行ajax调用后无法浏览其他页面?

Vin*_*mth 5 javascript ajax asp.net-mvc jquery

在传统的MVC 5 Web应用程序中,我希望用户能够在单击按钮后继续浏览,该按钮对长时间运行的操作进行ajax调用.

(注意:操作返回void- 我对响应不感兴趣)

当我单击按钮时,我无法发出任何其他请求,直到操作完成.

编辑:这是ajax代码:

$('#EmailReport') //
    .click(function() {
        $.ajax({
            type: "POST",
            url: '/Home/EmailReport',
            complete: function() {console.log("done")},
            async: true
        });
    });
Run Code Online (Sandbox Code Playgroud)

调节器

[HttpPost]
public async Task EmailReport()
{
   // for testing - sleep for 10 seconds
   await Task.Delay(TimeSpan.FromSeconds(10));
}
Run Code Online (Sandbox Code Playgroud)

以下是Chrome开发工具中的屏幕截图:

Ajax请求

EmailReport是ajax调用,底部的两个请求是我试图浏览到另一个页面 - 因为你可以看到第一个请求是pending,任何后续请求是cancelled

有没有人有任何想法我如何解决或解决这个问题?

use*_*766 1

最简单的方法如下:

Task t = new Task(() => TimeSpan.FromSeconds(10));
t.Start();
Run Code Online (Sandbox Code Playgroud)

对于长时间运行的作业,最好使用任务而不是线程,以避免核心亲和性和更好的 CPU 利用率。