使用AngularJS的Web API异步方法

Ser*_*uss 2 .net c# asp.net async-await

我是新来使用AngularJSMVC5,我一直在寻找使用Web APIAngularJS因为它似乎是一个很好的解决方案将数据加载到您的客户端模式.

但是我注意到有不少指南使用异步操作返回Task<Model>,我不明白这会给你带来什么好处而只使用标准Web API操作(例如:http://monox.mono-software.com/blog/post/ Mono/233/Async-upload-using-angular-file-upload-directive-and-net-WebAPI-service /http://www.asp.net/web-api/overview/getting-started-with-aspnet -web-api/build-a-single-page-application-%28spa%29-with-aspnet-web-api-and-angularjs).

由于这些对Web API的调用是异步的,我不知道为什么我们需要使这些方法调用异步.使用标准的Web API调用不是更好吗?

我不知道stackoverflow是否适合这个,但我希望能解释为什么调用这样做.

i3a*_*non 6

async-await服务器的好处是可扩展性和性能.当您使用异步(非阻塞)替换同步(阻塞)操作时,可以释放先前阻塞的线程,等待您可以用来同时处理其他请求的线程.

async-await 使您能够用更少的资源做更多事情.

我们假设我们有这种同步方法:

public void Process()
{
    for (int i = 0; i < 1000; i++)
    {
        Math.Sqrt(i);
    }

    Thread.Sleep(3000); // sync I/O
}
Run Code Online (Sandbox Code Playgroud)

通过制作async:

public async Task ProcessAsync()
{
    for (int i = 0; i < 1000; i++)
    {
        Math.Sqrt(i);
    }

    await Task.Delay(3000) // async I/O
}
Run Code Online (Sandbox Code Playgroud)

我们可以使用单个线程来处理同一方法的多个请求,因为处理请求的线程await在异步操作时会被释放.