[英]Refactor suggestion for C# try catch with server async Task return
感謝您的任何建議!
private async Task<TResult> PostRequestAsync<TResult>(ServerRequest request)
{
//check if expired on client side
if (LocalHelper.IsExpired(request))
{
request.Token = await PendRefresh().ConfigureAwait(false); //[Refresh]
}
try
{
return await PostServerAsync<TResult>(request).ConfigureAwait(false); //[Send Data]
}
catch (ServerException e)
{
//session expired on the server side
if (e.Code == HttpStatusCode.Unauthorized)
{
request.Token = await PendRefresh().ConfigureAwait(false); //[Refresh]
return await PostServerAsync<TResult>(request).ConfigureAwait(false); //[Send Data]
}
}
return default;
//Q2, is this OK?
async Task<string> PendRefresh()
{
//something here
}
}
在那里添加了一個簡單的流程
你現在所擁有的至少是非常易讀的。
您正在重復“刷新”和“發送數據”,但鑒於我可以在一個屏幕中看到所有工作流程和故障點,我認為這比更通用的方法更重要。
我要更改此設置的唯一原因是刷新或發送數據功能變得不重要並干擾了對身份驗證工作流程的理解。
如果您確實想將其重新構建為練習,我認為您正在尋找的技術是“ 延續任務”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.