Запуск кода до и после каждого вызова метода в Meteor
Я запускаю несколько вызовов методов, которые должны показать конечному пользователю режим загрузки и скрыть его, когда метод перезапускает результат. Я искал способ запуска этого кода перед вызовом и кода после вызова для каждого метода без повторения кода.
swal({
title: "Saving...",
onBeforeOpen: () => swal.showLoading()
});
Meteor.call("method", {/*params*/}, (err, res) => {
//Do something
swal.hide();
});
Я хочу иметь возможность запускать эти 2 кода swal без записи этого кода при каждом вызове. Есть ли способ настроить Meteor.call для выполнения каких-либо действий до и после вызова метода?
1 ответ
Вы можете абстрагировать код в функцию-оболочку, которая принимает имя вашего метода, параметры и функцию обратного вызова в качестве аргументов:
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
сделать его доступным для других файлов / модулей.