我想从“server/main.js”中的服务器脚本向“client/main.js”中的客户端脚本发送消息。
我用发布/订阅尝试了一些事情,但我一定是做错了什么。运行 meteor 服务器的控制台因数以千计的错误消息而变得疯狂。
服务器
Meteor.publish("test", function () {
this.ready();
return 'some test';
});
客户
Template.panel.onCreated(function loginOnCreated() {
Tracker.autorun(function () {
const handle = Meteor.subscribe('test');
if(handle.ready()){
alert('Done')
}
});
});
无论如何,我需要一个服务器方法来在客户端准备好时调用它。
原因:Template.panel.onCreated无法从Mongodb查询数据。它必须等待几秒钟。所以我想做的在客户端的 Template.panel.onCreated 中是不可能的。它必须等到 Mongo 准备就绪。
我该怎么做?
最佳答案
您应该将 Meteor.subscribe
放在 Tracker.autorun
之外。
我认为问题是因为 handle
是一个响应式(Reactive)数据源,所以当它改变 Tracker.autorun
里面的功能重新运行时,它再次订阅服务器,创建一个新句柄,新句柄导致函数再次运行。这一遍又一遍地循环并向您的控制台抛出许多错误消息
关于javascript - 如何在 Meteor 中从服务器向客户端发送消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40762423/