流星-从客户端取消一个服务器方法
Meteor - Cancelling a Server Method from the Client
我正在通过服务器方法执行数据库计数。用户可以选择如何执行计数,然后调用该方法。
我的问题是计数可能需要一些时间,用户可能会在方法运行时改变主意并请求不同的计数。是否有任何方法可以取消调用的方法并运行新的计数?
我认为this.unblock()可能工作;它将允许运行新方法,但不会取消旧方法。我也考虑过预计数,然后只使用查找,但是有太多的选择器组合。
这是我的代码,它相当简单:
//Server
Meteor.methods({
getFilterCount: function(oFilterSelector) {
return clMaBldgs.find(oFilterSelector, {}).count();
}
});
//Client
Meteor.call('getFilterCount', oFilterSelector, function (error, result) {
//do some stuff
});
无法从客户端取消对服务器的方法调用。
但是如果你的方法在短时间内被多次调用,并且你只关心最后一次调用的结果。您可以使用debounce来延迟执行一段时间。这将有助于减少对服务器的不必要调用。
更多的工作,但是如果您有一个反应变量(可能是DB中的一个条目),它是方法的状态,并且在方法本身中,您每次获得状态时都要检查该标志。
{
_id: "some id for the method", running: true
}
方法
的伪代码Meteor.methods({
method: (_id) => {
status = getStatusForId(_id);
while(status) {
status = getStatusForId(_id);
}
}
});
要停止它,只需将该标志更新为false,方法就会尽快停止
相关文章:
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- Javascript/web-dev:为什么你需要一个服务器来连接硬件
- 新的会话cookie直到下一个服务器请求才提供
- 客户端始终响应上一个服务器发送的事件,而不是当前事件
- 什么原生的javascript方法能够创建一个服务器
- 通过管道将多部分表单上载到另一个服务器
- PHP脚本,用于将目录从一个Linux服务器移动到另一个服务器
- 从JS访问另一个服务器XML
- 是否有一个服务器端JavaScript框架(node.js)可以在不使用模板引擎的情况下生成html页面
- 多个Node.js应用程序;在一个服务器文件的坏做法
- 将ajax请求发送到另一个服务器(特定的示例不起作用)
- 将Jquery从另一个服务器生成的链接的锚文本传递给Jquery变量
- 流星-从客户端取消一个服务器方法
- 使用jquery/javascript在aspx页面中填充一个客户端下拉菜单和一个服务器端下拉菜单
- 如何复制文件从谷歌驱动器到另一个服务器使用php
- 套接字.如何制作一个服务器
- Express node.js从node路由向另一个服务器发出get请求
- 为什么Javascript编程在一个服务器上工作而在另一个服务器上不行?
- 是否有一种方法可以让每个用户而不是每个选项卡运行一个服务器发送事件?
- 通过javascript访问另一个服务器的Form Action