在C#中,使用async
和await
關(guān)鍵字可以輕松地實(shí)現(xiàn)異步回調(diào)。以下是一個(gè)簡(jiǎn)單的示例,展示了如何使用AJAX調(diào)用Web API并在成功時(shí)執(zhí)行異步回調(diào):
首先,確保已安裝Newtonsoft.Json NuGet包,以便在C#中使用JSON。
創(chuàng)建一個(gè)C#控制臺(tái)應(yīng)用程序并添加以下代碼:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
namespace AjaxCsharpAsyncCallback
{
class Program
{
static async Task Main(string[] args)
{
string apiUrl = "https://jsonplaceholder.typicode.com/todos/1";
await CallApiAndPrintResultAsync(apiUrl);
}
static async Task CallApiAndPrintResultAsync(string apiUrl)
{
using (HttpClient httpClient = new HttpClient())
{
try
{
HttpResponseMessage response = await httpClient.GetAsync(apiUrl);
if (response.IsSuccessStatusCode)
{
string jsonResponse = await response.Content.ReadAsStringAsync();
JObject jsonObject = JObject.Parse(jsonResponse);
Console.WriteLine("異步回調(diào)結(jié)果:");
Console.WriteLine($"ID: {jsonObject["id"]}");
Console.WriteLine($"Title: {jsonObject["title"]}");
Console.WriteLine($"Completed: {jsonObject["completed"]}");
}
else
{
Console.WriteLine("請(qǐng)求失敗,狀態(tài)碼:" + response.StatusCode);
}
}
catch (Exception ex)
{
Console.WriteLine("請(qǐng)求異常:" + ex.Message);
}
}
}
}
}
在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為CallApiAndPrintResultAsync
的異步方法,該方法使用HttpClient
對(duì)象向指定的API發(fā)起GET請(qǐng)求。我們使用await
關(guān)鍵字等待請(qǐng)求完成,并將響應(yīng)內(nèi)容解析為JSON對(duì)象。然后,我們從JSON對(duì)象中提取所需的數(shù)據(jù)并打印到控制臺(tái)。
在Main
方法中,我們調(diào)用CallApiAndPrintResultAsync
方法并傳入API URL。由于CallApiAndPrintResultAsync
方法使用了async
和await
關(guān)鍵字,因此它將在等待API響應(yīng)時(shí)暫停執(zhí)行,并在收到響應(yīng)后繼續(xù)執(zhí)行。這使得我們可以輕松地實(shí)現(xiàn)異步回調(diào)。