我正在寻求澄清为什么立即await
返回异步非空任务的类型,而推迟await
返回任务本身。如果我在标题或其他地方的术语不正确,请告诉我。
private async Task<string> GetUserId(Guid id)
{
string thisUserId = null;
... do stuff ...
return thisUserId;
}
public async Task<IActionResult> MyFunc(Guid id)
{
var a = await GetUserId(id);
var b = GetUserId(id);
... do stuff ...
await b;
return Ok(true);
}
为什么a
类型的string
,而b
类型是Task<string>
?
在这两种情况下,您的方法总是返回一个类型为 的对象Task<string>
。但是,当您执行 时await
,其结果就是 的结果Task
,也就是您的字符串。
因此,如果您在最初调用该方法时执行此操作,则会Task
立即处理该方法。但是,在第二次调用时,Task
直到“做事”之后才处理。在这种情况下,您的变量仍然Task
是将返回字符串的变量。一旦你最终调用await
它,那么你就会得到那个任务的结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句