定期远程更新每个 extjs 网格行

Posted

技术标签:

【中文标题】定期远程更新每个 extjs 网格行【英文标题】:Remote update each extjs grid row periodically 【发布时间】:2015-05-27 07:52:10 【问题描述】:

任务的目标是从后端更新每一行的内容。这意味着对 php 的 ajax 请求。

表格最初加载了基值,并且需要定期将新的更新数据加载到每一行中。

创建一个每分钟运行的 ExtJs 任务,store.each 将检查所有记录,获取参数的 id,并且在 ajax 成功时,记录将被更新并提交。 然而,这种方法有一个缺陷——如果行数多于几行,则发送 50 或 100 个即时请求对于大多数人来说最终会超时。

同时获取所有数据并刷新整个网格不是一种选择 - 计算每行的所有数据将超过请求时间限制(约 30 秒),因此需要单独请求每个数据 - 但不是在同一时间。

有什么好的方法可以在 ext 中做到这一点吗?

更新:

我设法使用 setTimeout 作为 store.each 循环中 ajax 查询的延迟。每 5 次迭代,延迟就会增加 - 因此,当 Ext 任务完成并循环所有结果时,它们每 5 秒分批执行 5 次 - 并在任务再次运行时重新开始。

【问题讨论】:

你可以使用分页。这样可以限制显示(处理)的结果,并且可以安全地更新所有结果。 【参考方案1】:

最好向服务器发送请求并仅获取项目的变更集并将旧项目替换为已更改的项目。

如果您不想重新加载整个商店,唯一的变体是逐个发送请求,或者将它们打包成包并逐包刷新它们。

【讨论】:

在这种情况下请求所有记录将不起作用。如果网格有几个就可以了,但是 50-100 会花费很长时间 - 所需的数学、查询等需要几秒钟。所以最终可能需要几分钟才能返回结果 - 远远超过请求的 30 秒限制。 如上所述,更好的方法是只接收来自服务器的更改记录。你更容易实施吗?或者即使行不变,您也需要进行数学计算?我通常在数据库中有一个名为“updated_at”的列,并且只能获取在特定日期时间之后更改的记录。

以上是关于定期远程更新每个 extjs 网格行的主要内容,如果未能解决你的问题,请参考以下文章

新添加的行不能拖放到 extjs 网格面板中

ReactiveUI:如何实现定期刷新的ReactiveList

可编辑的网格 ExtJS,如何在网格上编辑行后更新数据库中的行

ubuntu 常用 命令行(不定期更新)

使用 react 定期运行 fetch

Mac 实用技巧不定期更新