首页 > 解决方案 > 在 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;
        }

标签: c#xamarin.iosxamarin.androidmvvmcross

解决方案


从调用函数中,您可以编写如下代码

    public void CallingFunctionToGetProductsAsync() {
        Task.Run(async () =>
        {
            var response = await GetProductsAsync(1);
            ProcessResponse(response);
        });

        Task.Run(async () =>
        {
            var response = await GetProductsAsync(2);
            ProcessResponse(response);
        });
    }

推荐阅读