以下是需要翻译的内容:
一旦我得到结果,我就会将列表合并并返回它(我认为这不是最佳实践)。
我知道我可以利用多任务线程,但我没有实际的示例可供参考。有人能建议处理此问题的最佳方法吗?
这里是我需要帮助的场景。
用户输入关键字并点击搜索
我使用httpclient请求将该关键字提供给多个API,以获取结果。
根据搜索关键字,我从不同的API获取响应。
但问题在于,我正在逐个地向这些API发出搜索调用。 我想要做的是,一旦用户点击搜索,就同时调用所有API,然后合并结果。
WalmartModel model=new WalmartModel();
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("**URL 1**");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//GET Method
HttpResponseMessage response = await client.GetAsync("");
if (response.IsSuccessStatusCode)
{
model = await response.Content.ReadAsAsync<WalmartModel>();
}
else
{
Console.WriteLine("Internal server Error");
}
}
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("**URL 2**");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//GET Method
HttpResponseMessage response = await client.GetAsync("");
if (response.IsSuccessStatusCode)
{
model = await response.Content.ReadAsAsync<WalmartModel>();
}
else
{
Console.WriteLine("Internal server Error");
}
}
一旦我得到结果,我就会将列表合并并返回它(我认为这不是最佳实践)。
我知道我可以利用多任务线程,但我没有实际的示例可供参考。有人能建议处理此问题的最佳方法吗?
Task.WhenAll
收集所有结果。 - Nkosi