Это очень полезно в реальной жизни.
Работа с Express.js
Итак, ваш обычный маршрут express
выглядит следующим образом:
function itWorksHandler( req, res, next ) {
res.send("It works!");
}
router.get("/check/works", itWorksHandler );
Но что, если вам нужно добавить какую-нибудь оболочку, обработчик ошибок или что-то еще?
Затем вы вызываете свою функцию из оболочки.
function loggingWrapper( req, res, next, yourFunction ) {
try {
yourFunction( req, res );
} catch ( err ) {
console.error( err );
next( err );
}
}
router.get("/check/works", function( req, res, next ) {
loggingWrapper( req, res, next, itWorksHandler );
});
Выглядит сложно?Хорошо, как об этом:
function function loggingWrapper( yourFunction ) => ( req, res, next ) {
try {
yourFunction( req, res, next );
} catch ( err ) {
console.error( err );
next( err );
}
}
router.get("/check/works", loggingWrapper( itWorksHandler ) );
В конце вы видите, что вы передаете функцию loggingWrapper
, имеющую один аргумент в качестве другой функции itWorksHandler
, и ваш loggingWrapper
возвращает новую функциюкоторый принимает req, res, next
в качестве аргументов.