我理解异步如何工作以及它与javascript承诺的比较,但我不确定如下所示的行如何能有任何好处
IdentityResult result = await UserManager.CreateAsync(user, model.password);
Run Code Online (Sandbox Code Playgroud)
因为我们正在创建一个异步调用并立即在线程上等待,所以在异步调用调用完成之前,不会执行后面的行.
好处是,如果该操作是真正异步的,那么在某些时候调用线程将被释放以在应用程序中执行其他工作,而不是同步阻塞.
这种用法带来了更高的可扩展性.
您还在等待操作完成后再继续操作.异步方法不会神奇地运行得更快,但它们可能会使用更少的资源,您通常可以同时运行多个资源.
如果我们想象CreateAsync看起来像这样:
async Task<IdentityResult> CreateAsync()
{
// do something
await Task.Delay(1000);
// do something else
}
Run Code Online (Sandbox Code Playgroud)
然后在await Task.Delay(1000)你释放一个线程并异步等待而不是等待它一秒钟.该线程可以在您的进程中执行其他CPU操作,并避免上下文切换.
如果CreateAsync实现正确,那么有一些实际的异步操作而不是那样Task.Delay
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |