下面的代码,有没有必要await
public async Task<int> GetAsync()
{
return await Db.GetAsync();
}
没有必要,可以直接return,如果在db.get里面且是在await之后的代码上抛出错误,生成的exception堆栈信息不会有public async Task<int> GetAsync() 这一帧
在给定的代码中,使用await是有必要的。
当你在一个异步方法中调用另一个异步方法时,使用await关键字可以暂时挂起当前方法的执行,等待被调用的异步方法完成后再继续执行当前方法的剩余部分。这样可以确保异步方法能够以非阻塞的方式执行,并且可以正确地处理异步操作的结果。
在你的代码中,Db.GetAsync()是一个异步方法,返回类型为Task<int>,表示它会异步返回一个int类型的结果。通过在调用的方法前加上await关键字,你告诉编译器你希望等待Db.GetAsync()方法的完成,并且将结果返回给调用者。
如果你省略了await,代码会变成以下形式:
csharp
Copy code
public async Task<int> GetAsync()
{
return Db.GetAsync(); // 缺少 await
}
这样做会导致返回的是一个未完成的Task<int>,而不是实际的int结果。这可能会引发潜在的问题,因为调用者可能会在未完成的任务上进行进一步的操作,而不是获取到真正的结果。
因此,在异步方法中,当你调用一个异步方法并希望等待它完成后再继续执行,你应该使用await关键字。这样可以确保异步方法的执行顺序和结果的正确性。
await是同步执行 会等待await函数执行后进行接下来的流程 ,接口异步(Async)通讯会导致无法正常返回数据 因为你的函数还没给出结果它就插队返回了 await的作用就是等待当前函数执行完毕走后面流程
public Task<int> GetAsync()
{
return Db.GetAsync();
} 试试这样行不行,然后再真正要使用到int结果的地方再await,这样可以提高程序的响应效率。
就你那样子写挺好的,await可以提高并发