簡單的連續呼叫
public async Task<JobResult> GetDataFromWebAsync()
{
var nextJob = await _database.GetNextJobAsync();
var response = await _httpClient.GetAsync(nextJob.Uri);
var pageContents = await response.Content.ReadAsStringAsync();
return await _database.SaveJobResultAsync(pageContents);
}
這裡需要注意的主要事項是,雖然每個 await
-ed 方法都是非同步呼叫的 - 並且在該呼叫的時間內控制被返回到系統 - 方法內部的流程是線性的,並且不需要任何特殊處理,因為非同步。如果任何方法呼叫失敗,則異常將按預期處理,在這種情況下,意味著方法執行將被中止,異常將在堆疊中上升。