有什么方法可以知道流星订阅何时“有效”?

2023-11-24

如果我改变一个Sessionvar 并通过以下方式触发重新订阅autosubscribe,是否有任何回调机制可以等待“最新”数据从服务器上下来? [1]

如果你看一下这个要点您将看到一些代码,这些代码随着订阅的变化而记录集合的内容。输出的相关部分:

at Subscribed; comments are: first post on #1 - second post on #1 
at Flushed; comments are: first post on #1 - second post on #1 
at Subscription complete; comments are: first post on #1 - second post on #1 - first post on #2 - second post on #2

所以,即使在 (a) 调用之后.subscribe, (b) 调用Meteor.flush(c) 位于onReady回调.subscribe;集合中仍然存在过时的数据,并且只有在第三种情况下才是“正确”的数据。

我意识到反应式模板和.observe最终将收到正确的数据,并且事情将“稳定”到正确的状态。但有什么方法可以让我们知道我们还没有到达那一步吗?

例如,大多数流星示例应用程序(以及我自己的应用程序)在从订阅的集合中添加和删除数据时容易出现一些抖动(类似于 FOUC)。如果我们知道订阅正在“加载”,我们就可以采取一些措施。

[1] 显然,服务器上的数据在不断变化,但正如您在要点中看到的那样,我无法(没有超时)找到它甚至是正确的点。因此我在问题中使用了“有效”。

一个非常简单且常见的用例

使用madewith应用程序;当您第一次加载它时,似乎没有注册任何应用程序,直到数据传输完毕并且应用程序突然出现。

这样做的原因是Meteor.subscribe已被调用,但数据尚未传出。但是模板没有简单的方法来告诉数据正在等待并且它应该显示“正在加载”模板。在madewith他们实际上在数据加载时做了一些事情,但这是一个回调,因此打破了正常的流星做事方式(即反应式编码)。

如果能够写出如下内容会更好(IMO):

 {{unless apps_loaded}}{{> loading}}{{/unless}}

and

 Template.madewith.apps_loaded = function() { return !Apps.isComplete(); }

有趣的问题。

收到新订阅通知的正确位置是onReady打回来。请注意,那里发生的日志记录始终包含您的新数据。检查 (a) 和 (b) 没有用,因为调用之间存在延迟subscribe当所有数据从服务器到达时。

根本问题是没有等效的onRemove删除刚刚停止的订阅的数据后运行的回调。而且,autosubscribe在停止旧的低音炮之前故意启动新的低音炮,以避免闪烁。

真正的用例是什么?大多数情况下,这样的回调是不必要的,因为模板还可以将其查询限制为应在范围内的数据。在您的示例中,呈现注释的模板助手可能仅查询当前的注释post_id在会话中,因此在数据库中添加额外的注释没有什么坏处。 像这样的东西:

Template.post.comments = function () {
  return Comments.find({post_id: Session.get('post_id')});
};

这使得策略比通用策略更加复杂autosubscribe功能,例如订阅用户最近查看的三个帖子的评论。或者,订阅每个帖子的前几条评论,然后仅在选择该帖子时单独订阅该帖子的完整评论集。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有什么方法可以知道流星订阅何时“有效”? 的相关文章

  • 通过 jQuery tiny PubSub 传递数组

    jQuery 微型 PubSub https gist github com 661855在传递原始值或对象时非常有用 但在传递数组时会遇到一些问题 所以我必须将数组包装成一个对象 function var o subscribe func
  • RSS:刷新率?

    我正在编写一个供自己使用的小应用程序 它将使用公开发布的 RSS 提要 据我所知 该协议中没有订阅 发布机制 我需要让我的应用程序定期通过 HTTP GET 获取 RSS 提要 如果是这样的话 我想每隔十分钟左右就抢一次 但我担心被视为施虐
  • 在 GCP PubSub 中收到任何响应之前重试总超时时间已超过

    我正在尝试使用 Node js 推送到 PubSub 主题 google cloud pubsub模块 这是 JavaScript 代码 const pubsub require google cloud pubsub class MyPu
  • 让 React 在表单输入字段下显示单独的错误消息

    我正在提交一个返回一系列错误的表单 但我无法弄清楚如何让每个单独的错误出现在正确的输入字段下 现在 所有错误都会打印在每个输入字段下 我在用着react bootstrap 任何帮助 将不胜感激 getValidationState var
  • 带有移动前端UI框架的流星[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有人将meteor与移动前端框架集成吗 为了使移动 html5 应用程序看起来 更原生 有许多 CSS 前端框架 例如 流星http
  • 如何使用 Meteor Spacebars 模板动态渲染 HTML?

    假设我正在存储 div name div and div age div 在我的数据库中 然后我想获取第一个 HTML 字符串并将其呈现在模板中 gt template1 它只渲染第一个字符串 name 车把在里面 然后我想给出新生成的模板
  • 同一 Kinesis 流的多个不同消费者

    我有一个 Kinesis 生产者 它将单一类型的消息写入流 我想在多个完全不同的消费者应用程序中处理这个流 因此 对于给定的主题 流 具有单个发布者的发布 订阅 我还想利用检查点来确保每个消费者处理写入流的每条消息 最初 我为所有消费者和生
  • Meteor 抛出 throwIfSelectorIsNotId 异常

    运行某些代码时 Meteor 会抛出 throwIfSelectorIsNotId 异常 我有两个客户端运行相同的代码 当第二个客户端运行相同的代码时会引发异常 无法弄清楚这个异常的含义以及抛出的原因 希望有人能够解释一下 对于客户端上的某
  • Meteor 发布错误 - 发布函数返回非游标数组

    我有这个出版物 Meteor publish temsInThisCompetition function id var teams return Competitions find id fetch map function doc fo
  • 如何强制 Meteor 重新加载订阅?

    在我的应用程序中 sections是一个链接到的集合courses通过一个名为course sectionIds 初始加载工作正常 但在管理面板中添加部分时遇到非反应式连接问题 这是路线 route adminCourse path adm
  • meteorjs 中的 imagemagick (在流星路由器和光纤的帮助下)

    我无法在meteorjs 中使用imagemagick 我正在开发一个小型 svg gt png 转换器 其中包含一个 REST API 来提供转换后的图像 我用meteor router实现了其余的api imagemagick 转换有效
  • pubnub 和 head.js

    有没有人成功整合过pubnub http www pubnub com 和 head js 正确吗 Pubnub http www pubnub com 希望我将他们的脚本放在页面底部并带有 div 就在它前面的标签 这可以确保在最后调用
  • 如何动态突出显示网页上的字符串?

    我想创建带有 url 的页面 例如 http xyzcorp schedules 2015Aug24 Aug28 Jim Hawkins http xyzcorp schedules 2015Aug24 Aug28 Billy Bones
  • 4 级订阅嵌套在流星中

    我正在使用流星 这是我的架构 每个都是一个单独的集合 课程有很多讲座 讲座有很多问题 问题有很多答案 我想要一页可以显示给定课程的讲座 问题和答案 我可以毫无问题地显示课程的讲座 但在显示更多嵌套项目时遇到问题 我理想地希望拥有 讲座有 c
  • 为什么我的带有帐户包的 Meteor 应用程序没有发送验证电子邮件?

    我正在制作一个流星应用程序 并且添加了 mrt 帐户密码包以及 mrt 帐户 ui bootstrap dropdown 我添加了登录按钮 以便用户可以创建一个帐户 效果很好 我正在使用所有默认值 在服务器上我有代码 Accounts co
  • 如何将 CSV 文件中的数据导入到服务器端的 Meteor 集合中

    我正在尝试为我之前的帖子找到解决方案 Mongo 在 Meteor 应用程序中的 id 字段上给出重复键错误 https stackoverflow com questions 28961281 mongo gives duplicate
  • 如何正确配置meteor以与节点文件上传模块“multer”一起使用

    我刚从流星开始 我找到并添加了 multer 包 meteor add pfafman multer 现在 我想知道如何配置meteor的服务器端来使用 在我的普通节点应用程序中 我像这样使用它 app use multer dest up
  • 如何使用redis发布/订阅

    目前我正在使用node js和redis来构建应用程序 我使用redis的原因是因为发布 订阅功能 该应用程序只是在用户进入用户或离开房间时通知经理 function publishMsg channel mssage redisClien
  • ZMQ:XPUB 套接字上没有多个订阅者的订阅消息(最后值缓存模式)

    我实现了 ZMQ 的最后值缓存 LVC 示例 http zguide zeromq org php chapter5 Last Value Caching http zguide zeromq org php chapter5 Last V
  • 如何调试性能问题/优化您的流星应用程序

    我刚刚将 Meteor 应用程序部署到 Digital Ocean 上的生产服务器上 我注意到 对于大约 7500 个文档 完全获取对象 有选择地仅获取 3 个字段 并填充自动完成数据大约需要 3 5 秒 我相信对于如此数量的数据来说 它应

随机推荐

  • 如何在Spring Boot中为RestTemplate设置PropertyNamingStrategy?

    我编写了一个 SpringBoot 应用程序 它使用一个 REST API 并呈现一个 REST API 我的模型 pojo 有驼峰命名的属性 应用程序使用的 json 具有 under score 属性名称 应用程序生成的 json 具有
  • React Native 中的 AutoCompleteTextView 兼容 iOS 和 Android

    我需要在本机反应中实现 AutoCompleteTextView 问题是没有这样的内置组件 所有可用于模仿此功能的模块和库并不完全相似 主要问题是建议没有出现在视图上 如选择框 选择器 即使是这样 它与KeyboardAvoidingVie
  • 尝试使用 jasmine 和 Angular 时出现错误

    当我尝试使用时 httpBackend flush 我收到错误类型错误 browser cookies 不是函数 我找不到有关此类错误的任何信息以及任何解决方案 describe someText function var httpBack
  • jQuery 按钮单击 jqGrid 刷新仅触发一次

    我有以下 jQuery 代码 用于填充 jqGrid 第一次单击按钮时 它可以完美地发布到我的 ASP NET MVC 页面 我的问题是 任何其他点击超过第一个点击按钮时似乎都会运行 jquery 代码 但它永远不会进入 POST 页面 有
  • 为什么 WPF 支持多重绑定,但 silverlight 不支持?

    多重绑定是 WPF 中非常强大的功能 为什么 silverlight 不支持它 他们从来没有抽出时间来增加支持吗 它太大而无法适应 NET 框架 它会出现在 Silverlight 5 中吗 有谁知道答案吗 Thanks 它不受开箱即用的支
  • 在子进程 Popen 和通信后关闭所有文件的正确方法

    我们在运行 python Twisted 应用程序的 Ubuntu Linux 机器上遇到了一些可怕的 打开文件过多 问题 在我们程序的许多地方 我们都使用子进程 Popen 如下所示 Popen ifconfig iface shell
  • 错误:项目上未安装 EntityFramework 包

    我刚刚安装了 SQL Server 2008 将 ASP NET MVC 4 项目配置为部署在本地 IIS 上 并添加了到当时创建的数据库的新连接 在 sql server 2008 中 当我尝试通过启用迁移 实体框架 时启用 迁移 Con
  • 如何在格子中标记面板

    这是一个简单的问题 您肯定已经遇到过 但让我很头疼 我有一个像这样的数据框 set seed 3 mydata lt data frame var rnorm 100 20 1 temp sin sort rep c 1 10 10 sub
  • 评估业务规则引擎的标准[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我们正在购买业务规则引擎
  • Jquery 选择元素 2 的位置进一步 - .next().next() 的另一种方式

    我正在寻找一种方法 如何选择一个 div 元素 该元素不是通过单击功能 选择 的元素的直接下一个元素 div siblings div div text div div div 现在我想选择 id 为 get this one 的一个 在我
  • Git 如何记录(或更可能表示)其 blob 的文件路径和名称,然后识别重命名?

    我正在尝试了解 git 设法 记住 文件名及其路径的方式 因为它只将文件内容存储在 blob 中 解释是在链接在这里Abizem 写的不错吗 这是迄今为止我见过的最好的 后续问题是 git 如何 在哪里 确定我们何时具有相似性 特别是在 移
  • Python 等价于 vector::reserve()

    我正在寻找 C vector reserve 的 Python 等效项 我不知道列表会提前有多大 但我知道它会相当大 并且我希望尽可能避免调整大小 因为列表是在深层内部循环中增长的 到目前为止 我提出的唯一解决方案与 vector rese
  • 将映射值复制到 STL 中的向量[重复]

    这个问题在这里已经有答案了 目前正在努力学习Effective STL 第 5 条建议使用范围成员函数通常比使用单元素函数更可取 我目前希望将映射中的所有值 即 我不需要键 复制到向量中 最干净的方法是什么 你可能可以使用std trans
  • __stdcall的含义和用法是什么?

    我遇到过 stdcall这些天很多 MSDN 没有非常清楚地解释它的真正含义 何时以及为什么应该使用它 如果有的话 如果有人能提供解释 最好是举一两个例子 我将不胜感激 这个答案涵盖了 32 位模式 Windows x64 仅使用 2 个约
  • 在 JDBC 中处理 DATETIME 值 0000-00-00 00:00:00

    如果我尝试这样做 我会得到一个例外 见下文 resultset getString add date 对于包含 DATETIME 值 0000 00 00 00 00 00 DATETIME 的准空值 的 MySQL 数据库的 JDBC 连
  • 有效地查找大集合中具有低汉明距离的二进制字符串

    Problem 给定一个大 约 1 亿 无符号 32 位整数列表 一个无符号 32 位整数输入值和最大汉明距离 返回输入值的指定汉明距离内的所有列表成员 保存列表的实际数据结构是开放的 性能要求决定了内存中的解决方案 构建数据结构的成本是次
  • 在节目中跳入 Python 交互式会话?

    嘿 我想知道 我正在将 pydev 与 eclipse 一起使用 我真的很喜欢强大的调试功能 但我想知道 是否可以在eclipse中设置断点并在执行过程中跳转到交互式python解释器 我认为这会非常方便 edit 我想强调 我的目标不是跳
  • Symfony 2 注销(UserInterface::eraseCredentials)

    我想eraseCredentials是用来注销的吗 如果是这样 我如何清除教义实体的会话 No eraseCredentials 用于在持久化令牌之前擦除敏感数据 无论是序列化还是数据库 要以编程方式注销用户 您可以使用以下命令 this
  • JavaMail检查邮件内容 gmail IMAP

    我正在尝试阅读我的消息 我可以让它打印标题 但发件人和内容显示得很有趣 这是我用来显示消息的代码 int j message length 1 for int i j i gt 0 i System out println Message
  • 有什么方法可以知道流星订阅何时“有效”?

    如果我改变一个Sessionvar 并通过以下方式触发重新订阅autosubscribe 是否有任何回调机制可以等待 最新 数据从服务器上下来 1 如果你看一下这个要点您将看到一些代码 这些代码随着订阅的变化而记录集合的内容 输出的相关部分