【发布时间】:2020-09-19 00:42:07
【问题描述】:
我有一个异步方法,它调用一个 api 来写入数据并检索它。但是 get 方法总是返回之前的结果。如果我在方法调用之间引入延迟,我会得到更新的数据。
public async Task<ServerResult<IEnumerable<int>>> UpdateData(int data)
{
var updatedResult = await apiClient.UpdateAsync(data);
//If the updatedResult.StatusCode != 200 return appropriate message, otherwise get the updated data and return it.
var getResult = await apiClient.GetAllAsync();
return getResult
}
我对 async/await 的理解是,每个等待的方法都是异步顺序执行的,这意味着 GetAllAsync 仅在 UpdateAsync 完成后运行(即 Task.Run(() => UpdateAsync(data)).ContinueWith(t => return GetAllAsync()))。如何确保 GetAllAsync 仅在 UpdateAsync 之后运行,而无需延迟或让客户端进行单独的 get 调用?
【问题讨论】:
-
问题不在提供的代码中。检查
UpdateAsync是否返回仅在数据更新后才能完成的任务,检查您的api 行为是否正确并检查某处(在apiClient或其后面的服务器应用程序中)是否没有缓存。
标签: c# asp.net-web-api async-await