2016-12-05 239 views
0

我订阅用户和产品,分别给出约5000和7000文档。我使用这些数据在用户和产品表单中进行typeahead搜索。如果我们在表单渲染上订阅,那么表单花费太长时间才能加载,所以我们在Meteor.startup上订阅,但这也会使我们的启动时间变慢。延迟流星订阅,直到有更多的资源可用

我们如何让订阅在第一个屏幕完成加载后运行,而无需触摸第一个屏幕的代码?我不想在firstScreen.onRender()内部进行订阅,因为根据输入的网址可能会有多个第一屏幕。

我试着在Meteor.onStartup中做Meter.defer,但是没有奏效。

另外,有没有更好的方式来完成语义超越加载所有的数据typeahead?

任何想法?

回答

0

我强烈建议您使用Pattern'Template-Level Subscriptions'来确保您的数据已准备好到您的模板中。 这里是解释这个链接 - >https://www.discovermeteor.com/blog/template-level-subscriptions/

我希望帮助,

+0

这就是问题...如果我里面的模板onCreated订阅,然后在模板时间过长加载。因此我想在订阅之前订阅它,理想情况下客户端并不忙碌。 – Simon

+0

我明白你的观点。但是如果你在实现之前实现了一种加载数据的方式,那么在性能上就不会有真正的收益。加载时间的总和将是相同的。我推荐一种新的方法,你真的需要在你的模板上的所有5000,7000文档吗?如何加载部分?分页或通过滚动页面加载。你会改善你的加载时间,保证 –

+0

谢谢。我明白你的意思是“总加载时间将是相同的。”即使它是相同的,如果在客户端不忙时完成,它是否可以被认为更快?是的,我们确实需要所有文档,因为它是由语义提供的可搜索下拉菜单。 – Simon