c# - 在 c# 中进行并行 api 调用并异步处理每个响应
问题描述
我有一个场景,我需要在 c#(Xamarin iOS 和 Xamarin Android)中并行进行多个 api 调用(具有不同参数的相同 api)。而且我不想等待所有任务完成,而是每当有响应出现时,我都应该处理它并相应地更新 UI。
需要多次调用的方法
public async Task<Response> GetProductsAsync(int categoryId, int pageNo = -1, int pageSize = -1)
{
try
{
string url = "";
if (pageNo == -1 || pageSize == -1)
url = $"catalog/v1/categories/{categoryId}/products";
else
url = $"catalog/v1/categories/{categoryId}/products?page-number={pageNo}&page-size={pageSize}";
var response = await client.GetAsync(url);
string responseString = await response.Content.ReadAsStringAsync();
GetParsedData(response.IsSuccessStatusCode, responseString);
}
catch (Exception e)
{
apiResponse.status = "internalError";
apiResponse.data = e.Message;
}
return apiResponse;
}
解决方案
从调用函数中,您可以编写如下代码
public void CallingFunctionToGetProductsAsync() {
Task.Run(async () =>
{
var response = await GetProductsAsync(1);
ProcessResponse(response);
});
Task.Run(async () =>
{
var response = await GetProductsAsync(2);
ProcessResponse(response);
});
}
推荐阅读
- android - 使用带有共享首选项的 Json 登录
- ios - 有没有办法从大量对象中仅加载几个项目并填充到 UICollectionView
- c# - 如何在 ASP.NET MVC 中使用 ViewBag 中的数据填充 DropDownList?
- python - 如果我有两个数据框,其中一个是其他数据框的子集,如何完全删除公共行?
- django-rest-framework - 如何使用 Mongoengine REST 将数据发布到嵌入式文档
- ibm-cloud - 如何在不通过 ibm-console 登录的情况下访问 IBM logDNA
- amazon-web-services - 仅将 api 流量路由到其他 AWS EC2 实例
- architecture - 如何找到程序的源代码并从另一台电脑控制软件
- woocommerce - 使用“任何变体”时,产品属性在前端不起作用
- regex - 前 8 个字母是相同的正则表达式