我有几个用 Javascript 编写的 lambda 函数。有什么方法可以包装这些处理函数来执行一些常见的日志记录代码吗?
// handlers.js
export const emailHandler = (event, context, callback) => {
email();
}
export const loginHandler = (event, context, callback) => {
login();
}
类似这样的事情:
// genericHandler.js
export const genericHandler => (event, context, callback) => {
console.log('Event', event);
// How can I also make this work for login handler?
return emailHandler(event, context, callback)
}
最佳答案
我认为这里的解决方案是将一些通用逻辑放入一个包/函数中,您可以在每个包/函数中使用它们。您不希望将一个 Lambda 函数的代码包含在另一个函数中。您希望尽可能减少代码的大小,以便冷启动更快。诚然,如果您的代码很小,那不会有很大的区别,但这有点反模式,将相同的代码封装在多个函数中,并让代码根据其调用方式执行不同的操作。
话虽如此,您始终可以在函数中包含多个入口点,然后传递一些内容来决定从那里调用什么,甚至传递您想要调用的函数。所以像这样:export const emailHandler = (event, context, callback) => {
genericHandler(event, context, callback, email);
}
export const loginHandler = (event, context, callback) => {
genericHandler(event, context, callback, login);
}
export const genericHandler => (event, context, callback, function) => {
console.log('Event', event);
// How can I also make this work for login handler?
return function(event, context, callback)
}
const email = (event, context, callback) => {
// email code
}
const login = (event, context, callback) => {
// login code
}
关于javascript - 如何包装 javascript lambda 处理函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60012997/