Я использую асинхронную функцию внутри объекта для отправки ответа в express.js
Код контроллера:
module.exports = {
async signUpEmail(req, res) {
/**
* @description Parameters from body
* @param {string} firstName - First Name
* @inner
*/
const firstName = req.body.firstName;
res.send({ success: name });
throw new Error(); // purposely Done
}
}
Вопрос:
Поскольку метод signUpEmail в моем случае является асинхронным, и он будет отклонен любым моим асинхронным методом, который здесь выбрасывается, он приходит Error
(намеренно помещен туда)
поэтому зарегистрируйте это в консоли.
(node:13537) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error
(node:13537) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Поэтому я должен обрабатывать его с маршрутов, откуда я его вызываю.
Код маршрутизатора
const routes = require('express').Router();
const SignUpController = require('../controllers/signUpController')
// /signup
routes.post('/', SignUpController.signUpEmail);
module.exports = routes;
что-то вроде этого SignUpController.signUpEmail().then(…);
Но так как я не вызываю функцию в маршрутах, которые я просто прохожу. Как это можно сделать эффективно?
PS: Пожалуйста, не предлагайте слишком сложные решения. Я новичок в JS и учусь.
Я не использовал цепные обработчики маршрутов, потому что хочу создать модульный, монтируемый обработчик маршрутов.
routes.pos('/', (...args) => SignUpController.signUpEmail().then(…))
- person Bergi   schedule 23.04.2017…signUpEmail(...args)…
или что-то еще, что ожидает ваша функция - person Bergi   schedule 23.04.2017ReferenceError: args is not defined
было бы очень полезно - person Ankur Anand   schedule 23.04.2017routes.post('/', (req, res) => SignUpController.signUpEmail(req, res).then(…))
- person Bergi   schedule 23.04.2017SignUpController.signUpEmail(req, res)
, и делаем результат, возвращаемый обычной функцией.. Поправьте меня, если я не понял.. Спасибо за ваше большая помощь :) - person Ankur Anand   schedule 23.04.2017async/await
не является частью ES7, это часть ES2017. - person Felix Kling   schedule 23.04.2017