Web 选择策略来处理异步API调用的响应
有一个web应用程序没有自己的数据库,但通过API与远程应用程序通信。执行对API的调用需要一些时间,我们是异步执行的。从用户的角度来看,应用程序的响应性必须很高Web 选择策略来处理异步API调用的响应,web,asynchronous,Web,Asynchronous,有一个web应用程序没有自己的数据库,但通过API与远程应用程序通信。执行对API的调用需要一些时间,我们是异步执行的。从用户的角度来看,应用程序的响应性必须很高 假设用户正在更改某些数据。为了存储数据,我们需要打电话。我们在打电话后立即开始显示新数据。但是,如果呼叫响应不成功,我们该怎么办?我们需要恢复旧值并向用户显示某种警告。但用户可能会离开数据已更改的页面,看到完全不同的页面。处理这种情况的一般模式是什么?如果您使用的是.Net 4.5,您可以使用async/await来实现这一点。如果您
假设用户正在更改某些数据。为了存储数据,我们需要打电话。我们在打电话后立即开始显示新数据。但是,如果呼叫响应不成功,我们该怎么办?我们需要恢复旧值并向用户显示某种警告。但用户可能会离开数据已更改的页面,看到完全不同的页面。处理这种情况的一般模式是什么?如果您使用的是.Net 4.5,您可以使用
async/await
来实现这一点。如果您正在调用的web客户端提供了一个异步API,该API返回一个任务
,那么您只需在try/catch
块中等待调用即可。wait
将导致该方法立即返回,以便用户在执行时继续观察旧数据。一旦we client调用完成,方法“resumes”将在wait
之后,您可以更新数据
如果web客户端调用导致异常,该方法将在catch
块中恢复,您可以向用户显示错误
public async Task CallAPI()
{
try
{
var client = ...
await client.CallAPI();
}
catch(Exception ex)
{
// show warning message
}
}
如果您的web客户端不提供异步API,则可以使用任务并行库实现等效的API
public void CallAPI1()
{
Task.Factory.StartNew( () =>
{
var client = ...
client.CallAPI();
}).ContinueWith( t =>
{
if(t.Exception != null)
{
// display error
}
else
{
// update web page with
}
},
null,
CancellationToken.None, TaskScheduler.FromCurrentSynchronizationContext());
}
有关于async/await
的更多信息。并且有一些最佳实践可以遵循