У меня есть функция обещания асинхронности, я хотел бы знать, как перехватить все ошибки в выражении / nodejs
Если URL-адрес для getData1 недействителен, приложение перестает указывать unhandled promise rejection failed to fetch value
, как обработать ошибкуправильно без сбоя приложения.
//api.js
var express = require('express');
var router = express.Router();
var helper= require('../help.js');
router.get('/', function (req, res) {
helper.getData1().then(d1=> {
helper.getData2().then(d2=> {
return res.status(200).render("home.ejs", {data1: d1, data2:d2});
})
}).
.catch(err => {
return res.status(400).send({ error: err.message });
})
})
//help.js
module.exports.getData1= function () {
return new Promise(async function (resolve, reject) {
try {
url = 'https://jsonplaceholder.typicode.com/todos/';
request.get({ url }, (err, response, body) => {
if (!err && response.statusCode==200) {
resolve(JSON.parse(body));
}
else if(response.statusCode>=400 && response.statusCode<=500){
resolve({ errors: response.statusCode + "Error" });
}
else {
resolve({ errors: response.statusCode + ": Not authorised to access requested data" });
}
});
}
catch (err) {
reject(new Error("failed to fetch value"));
}
})
}