Javascript Meteor-从客户端取消服务器方法
我正在通过服务器方法执行数据库计数。用户可以选择如何执行计数,然后调用该方法 我的问题是,计数可能需要一些时间,用户可能会在方法运行时改变主意并请求不同的计数。我有没有办法取消调用的方法并运行新的计数 我认为这个。unblock()可能会起作用;它将允许运行新方法,但不会取消旧方法。我也考虑过预计数,然后只使用查找,但是选择器组合太多了 这是我的代码,非常简单:Javascript Meteor-从客户端取消服务器方法,javascript,meteor,Javascript,Meteor,我正在通过服务器方法执行数据库计数。用户可以选择如何执行计数,然后调用该方法 我的问题是,计数可能需要一些时间,用户可能会在方法运行时改变主意并请求不同的计数。我有没有办法取消调用的方法并运行新的计数 我认为这个。unblock()可能会起作用;它将允许运行新方法,但不会取消旧方法。我也考虑过预计数,然后只使用查找,但是选择器组合太多了 这是我的代码,非常简单: //Server Meteor.methods({ getFilterCount: function(oFilterSelec
//Server
Meteor.methods({
getFilterCount: function(oFilterSelector) {
return clMaBldgs.find(oFilterSelector, {}).count();
}
});
//Client
Meteor.call('getFilterCount', oFilterSelector, function (error, result) {
//do some stuff
});
更多的是一种变通方法,但是如果您有一个被动变量(可能是DB中的一个条目),它是方法的状态,并且在方法本身中,您会在每次获得状态的机会时检查该标志
{
_id: "some id for the method", running: true
}
方法的伪代码
Meteor.methods({
method: (_id) => {
status = getStatusForId(_id);
while(status) {
status = getStatusForId(_id);
}
}
});
然后,要停止它,只需将该标志更新为false,该方法将尽快停止。不可能从客户端取消已对服务器进行的方法调用
但是如果您的方法在短时间内被多次调用,而您只关心最后一次调用的结果。你可以用它来延迟执行几次。这将有助于减少对服务器的不必要调用 你发现了吗?我也想知道。有没有办法显示正在运行的呼叫列表?遗憾的是,没有。但是,我在mongo文档中找到了这个技巧。我还没试过。它可能可以用于取消db ops:这里的游戏有点晚了,但似乎
取消阻止
仍然是推荐的方法;引用第3段。@chazsolo,unblock肯定允许您运行新函数,问题是旧函数可能仍在运行。如果你知道你不再需要旧进程了,那就最好杀掉它们。@Adam同意了,只是说除了你在Mongo中找到的db.killOp
引用之外,我只能找到这些。也许这是千年发展目标路线图上的东西?