加载时异步下载json文件:同时? [复制]

Posted

技术标签:

【中文标题】加载时异步下载json文件:同时? [复制]【英文标题】:Async download json files on loading: Simultaneous? [duplicate] 【发布时间】:2020-09-12 19:58:36 【问题描述】:

在加载应用程序时,我需要下载 3 个小于 200kb 的小 json 文件。我有 3 种这样的方法:

private static async Task<bool> DownloadOne()
    
        using (var tokSource = new CancellationTokenSource(5000))
        
            try
            
                _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                var zurl = "URL");
                var response = await _httpClient.GetAsync(zurl, tokSource.Token);
                using (var stream = await response.Content.ReadAsStreamAsync())
                
                    ar localFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData);
                    var newpath = Path.Combine(localFolder, "one.json");
                    var fileInfo = new FileInfo(newpath);
                    using (var fileStream = fileInfo.OpenWrite())
                    
                        await stream.CopyToAsync(fileStream);
                    
                
            
            catch (OperationCanceledException)
            
                return false;
            
            catch (Exception e)
            
                return false;
                           
        
        return true;
    

是同时比做更快的方法吗?

await DownloadOne();
await DownloadTwo();
await DownloadThr();

【问题讨论】:

您尝试做些什么来衡量这个? 同步是什么意思?你能举个例子吗? 意思是最好不要等第一个下载完成后再第二个下载完成 与其问我们,不如衡量和比较两种方法的结果似乎很简单 @SushiHangover 谢谢,听起来很棒。因为它只是一个小文件,我认为它不会影响 3 GET 100 或 200ko 的网络 【参考方案1】:

是的,有。在开始下载下一个文件之前,您正在等待下载每个文件。您可以改为并行运行,并等待它们使用 Task.WhenAll() 完成:

var tasks = new Task[]DownloadOne(), DownloadTwo(), DownloadThr();
await Task.WhenAll(tasks);

【讨论】:

是的,这就是我正在寻找和测试的 Task.WhenAll :) 已经测试并且接缝工作良好,但没有在移动设备中使用 xamarin 进行测试

以上是关于加载时异步下载json文件:同时? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

script标签的async属性是用来异步加载,异步加载的作用是否同时下载,执行html代码和js代码

如何从异步函数中获取数组的所有值

由于异步 JSON 加载,Vue.js 错误 [渲染根实例时出错]

AJAX中的同步加载与异步加载

多主复制下处理写冲突-同步与异步冲突检测及避免冲突

js异步加载