我了解异步的工作原理以及它与 javascript 承诺的比较,但我不确定像下面这样的行有何好处
IdentityResult result = await UserManager.CreateAsync(user, model.password);
因为我们正在创建一个异步调用并立即等待线程,所以在异步调用完成之前不会执行后面的行。
好处是,如果该操作确实是异步的,那么在某个时刻,调用线程将被释放以在应用程序中执行其他工作,而不是被同步阻塞。
这种用法带来了更高的可扩展性。
您仍在等待操作完成后再继续。异步方法并不会神奇地运行得更快,但它们确实可能使用更少的资源,并且您通常可以同时运行多个方法。
如果我们想象一下CreateAsync
看起来像这样:
async Task<IdentityResult> CreateAsync()
{
// do something
await Task.Delay(1000);
// do something else
}
Then at await Task.Delay(1000)
您释放一个线程并异步等待,而不是保留它一秒钟。该线程可以执行进程中的其他 CPU 操作并避免上下文切换。
If CreateAsync
立即实现,然后有一些实际的异步操作来代替Task.Delay
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)