异步加载树层次结构
Loading tree hierarchy asynchronously
我正在开发一个具有树状层次结构的 API。我考虑支持树中所有节点的异步加载,但我不确定这是否是个好主意。我打算为此使用反应式扩展。
每个节点都有一个 Load 方法,该方法在其所有子节点都已加载之前不会完成(加载深度优先)。所以对于一个简单的结构:
1
|-- 1.1
| |- 1.1.1
| |- 1.1.2
|-- 1.2
|- 1.2.1
|- 1.2.2
节点 1 异步加载 1.1 和 1.2 并等待它们完成,这依次加载 1.1.1、1.1.2、1.2.1、1.2.2... 所以这是 6 个异步加载操作。树可能有 10 000 个节点...这是很多异步加载操作 - 问题 1 - 这会产生问题吗?
我想以一种可以将负载分散到特定时间跨度的方式实现这一点,这样用户可以调整加载时间以避免在需要一次加载大量节点时应用程序冻结。 问题 2 - 我将如何在响应式扩展中执行此操作?我需要研究哪些组件、自定义可观察对象、主题?不知道从哪里开始。
我最初的想法是使用 Observable.Join 模式...考虑我在这里的回答(以及提供给示例的 link,此处:) 。
HTH
我正在开发一个具有树状层次结构的 API。我考虑支持树中所有节点的异步加载,但我不确定这是否是个好主意。我打算为此使用反应式扩展。
每个节点都有一个 Load 方法,该方法在其所有子节点都已加载之前不会完成(加载深度优先)。所以对于一个简单的结构:
1
|-- 1.1
| |- 1.1.1
| |- 1.1.2
|-- 1.2
|- 1.2.1
|- 1.2.2
节点 1 异步加载 1.1 和 1.2 并等待它们完成,这依次加载 1.1.1、1.1.2、1.2.1、1.2.2... 所以这是 6 个异步加载操作。树可能有 10 000 个节点...这是很多异步加载操作 - 问题 1 - 这会产生问题吗?
我想以一种可以将负载分散到特定时间跨度的方式实现这一点,这样用户可以调整加载时间以避免在需要一次加载大量节点时应用程序冻结。 问题 2 - 我将如何在响应式扩展中执行此操作?我需要研究哪些组件、自定义可观察对象、主题?不知道从哪里开始。
我最初的想法是使用 Observable.Join 模式...考虑我在这里的回答(以及提供给示例的 link,此处:) 。
HTH