Предположим, у меня есть этот псевдокод в файле rout.js:
var pkg = require('random-package');
app.post('/aroute', function(req, res) {
pkg.impl_func(data, function (err, result) {
myFunction(entity).then(user=>{
//DO_STUFF_HERE
res.render('page.ejs');
}).catch(err => {
console.log(err);
res.render('error.ejs');
});
});
});
function myFunction(username) {
//.....
}
Используемый мной pkg найден на веб-сайте npmjs.myFunction()
всегда является моей функцией.
В моем коде вы можете видеть, что я реализовал оператор then / catch для случая, когда myFunction()
не удается.Поэтому, когда это происходит, error.ejs
отображается.
Но что происходит, когда происходит сбой пакета npm?В терминале я получаю сообщение об ошибке, но на стороне сервера нет обработки ошибок.Это означает, что в случае сбоя пользователь не будет уведомлен с помощью error.ejs
, это очевидно, поскольку эта функциональность исключена из моего кода.
Но каковы способы отрисовки error.ejs
, когда происходит сбой pkg?
Так как я уже использую технику .then()/.catch()
ниже, могу ли я сделать это выше?Другими словами, могу ли я вложить .then()/.catch()
операторов?Могу ли я заключить внешний код в try/catch
(при этом все еще имея try/catch
внутри?)