У меня проблема в моем текущем приложении ExpressJS. Я использую обычные функции для переноса различных маршрутов в приложении, и когда возникает ошибка, я могу легко использовать return next (err)
для выхода из функции (return
) и вызвать обработчик ошибок (next (err)
).Возврат ошибки из обещания в ExpressJS
Но что мне делать, если есть несколько сложенных функций, выполнение которых я хочу предотвратить?
В моем коде есть функция базового маршрута, там есть несколько других функций (которые являются обратными вызовами). В этих обратных вызовах я хочу полностью завершить выполнение маршрута. В настоящее время return next (err)
только уходит из текущего обратного вызова, но затем продолжает выполнение маршрута.
Спасибо за любые предложения!
Edit: я сломался какой-то код, чтобы описать проблему:
// This function is an expressJS route
function doSomeStuff (req, res, next) {
var mongooseObj = new mongooseModel ({});
mongooseObj.save (function (err) {
if (err)
return next (new Error ("whatever"));
// The line above returns from the callback, the expressJS error-handler handles the error, but then the code execution continues below
});
// Function continues here
}
Вашего вопрос очень нечеткий без кода, но если ваш вопрос о начале преломления обещания цепи, то обычный выбор между исключениями и вложенными обещаниями. –
Я знаю, что это нечеткое, потому что я не могу предоставить вам какой-либо код. Выброс ошибки напрямую был бы вариантом, но тогда обработчик ошибок expressJS не позаботится об этом, что и должно. У меня нет никаких обещаний, поэтому нет разрыва в цепочке обещаний. – NikxDa
Нет, я имею в виду бросить исключение, чтобы вырваться из цепи ** и ** поймать его. Но без кода я боюсь, что обсуждать нечего. –