Запуск кода до и после каждого вызова метода в Meteor - PullRequest
0 голосов
/ 09 января 2019

Я выполняю несколько вызовов методов, которые должны показать конечному пользователю модальный режим загрузки и скрыть его, когда метод перезапускает результат. Я искал способ запустить этот код до и после вызова для каждого метода без повторения кода.

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

Я хочу иметь возможность запускать эти 2 кода swal без записи этого кода в каждом вызове. Есть ли способ настроить Meteor.call для выполнения каких-либо действий до и после вызова метода?

1 Ответ

0 голосов
/ 09 января 2019

Вы можете абстрагировать код в функцию-оболочку, которая принимает имя вашего метода, параметры и функцию обратного вызова в качестве аргументов:

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

Обратите внимание, что callback не является "реальным" обратным вызовом, а просто помещается внутри операторов и получает аргументы от самого "реального" обратного вызова в качестве аргументов.

Используйте метод, например, так:

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

Если вам очень нужна эта функция, вы можете поместить ее в собственный файл и использовать export, чтобы сделать ее доступной для других файлов / модулей.

...