【发布时间】:2014-09-01 06:47:26
【问题描述】:
我想停止订阅过程。
目前这是我的代码:
if (Meteor.isClient) {
Meteor.autorun(function(){
var query;
query = Session.get('search.query');
if (!query) return;
if (Envi.temp.searchSubscribtion) {
console.log('Subscribtion for search has to stop ... ');
Envi.temp.searchSubscribtion.stop();
}
Envi.temp.searchSubscribtion = Meteor.subscribe('search', query, {
onReady : function () {
console.log('Finished.');
}
});
});
}
Env 是一个全局函数,我将订阅临时保存在temp.searchSubscribtion 中。
现在的问题:我将search.query 值更改为查询以获取所有项目。大约 1 分钟后显示完成的 console.log “Finished”。
在此之后,我将search.query 更改为一个查询,它只获取一些项目。大约 5 秒后显示 Finished console.log。
如您所见:一个长查询,一个小查询。
我现在想做的是:
当一个查询被改变时,当前的订阅必须被取消并且新的订阅必须开始,但是:
当我设置长查询和右(!)之后,我将 search.query 会话更改为小查询,“完成”console.log 在 1 分钟多后显示。
“Envi.temp.searchSubscribtion.stop();”正确执行(我看到控制台日志)但订阅并没有停止 - 似乎服务器刚刚完成第一个订阅而不是完成第二个 - 就像一个队列。
任何想法如何取消正在运行的订阅?
【问题讨论】:
标签: javascript meteor