运行 Meteor 中每个方法调用前后的代码

Running code before and after each Method call in Meteor

我正在 运行 调用几个需要向最终用户显示加载模式并在方法返回结果时将其隐藏的方法调用。我一直在寻找一种方法来 运行 这个预调用代码和 post 调用每个方法的代码而不重复代码。

swal({
  title: "Saving...",
  onBeforeOpen: () => swal.showLoading()
});
Meteor.call("method", {/*params*/}, (err, res) => {
 //Do something
 swal.hide();
});

我希望能够 运行 那些 2 swal 代码,而无需在每次调用中编写该代码。 有什么方法可以配置 Meteor.call 在调用方法之前和之后做一些事情吗?

您可以将代码抽象为一个包装函数,该函数接受您的方法名称、参数和回调函数作为参数:

const call = ({ title, name, params, callback }) => {
 swal({
  title: title,
  onBeforeOpen: () => swal.showLoading()
 });
 Meteor.call(name, params, (err, res) => {
   callback(err, res);
   swal.hide();
 });
}

请注意,callback 不是 "real" 回调,而是放在语句中并从 "real" 回调本身接收参数作为参数。

使用方法举例如下:

call({ 
  title: 'Saving...', 
  name: 'method', 
  params: {/*params*/}, 
  callback: (err, res) => {
    console.log('I am executed before hide');
  }
});

如果你非常需要这个功能,你可以把它放在一个自己的文件中,然后使用 export 让其他人可以使用它 files/modules。