按值返回值而不等待所有值返回异步 C#

Posted

技术标签:

【中文标题】按值返回值而不等待所有值返回异步 C#【英文标题】:Return value by value without waiting all values to return async C# 【发布时间】:2022-01-16 20:39:19 【问题描述】:

我有一种情况,我为数据调用 API 服务,当在前端显示该数据时,问题是我调用的服务有很多数据,所以我的前端正在等待后端一次获取所有数据,所以需要很长时间载入。我找不到任何解决方案如何在不等待所有值返回并按值执行的情况下将数据传递到前端?目前我正在使用public async Task,但这种方法在传递之前等待所有数据返回。

【问题讨论】:

如果数据有一个合理的除数,你可以把它分解成几个不同的网络请求? 看看IAsyncEnumerable<T>和read this article可能会有帮助 这是一个前端问题,它应该请求多个较小的数据块并以增量方式显示这些数据,而不是一次全部显示。查看 [分页查询)***.com/q/2380413/9363973) 了解如何实现这样的事情 也许它会帮助某人docs.microsoft.com/en-us/dotnet/csharp/whats-new/tutorials/… 【参考方案1】:

我们做了什么,我们将通话分成两个通话。首先,我们为 id 调用 API 并加载我们的页面。我们没有获取所有数据,因此加载速度很快。其次,我们为我们获得的每个 id 调用 API,并从第一次调用中将数据添加到对象。我们使用来自下拉元素调用的数据,所以在第二次调用完成之前,我们仍然可以在下拉列表中显示对象 ID。

【讨论】:

以上是关于按值返回值而不等待所有值返回异步 C#的主要内容,如果未能解决你的问题,请参考以下文章

C语言函数定义时既有返回值也有输出(ptintf),可以调用时只用返回值而不

在 SwiftUI 中捕获文本字段值而不按返回键 [重复]

使用 INDEX 和 MATCH 返回多个值而不使用 VBA

C# 7.2 代理“按值返回”

如何在 Python3 中向调用函数返回更多值并显示结果,目前它只打印第一个值而不增加? [复制]

在 C# 中,我应该按值传递参数并返回相同的变量,还是按引用传递?