не могу поймать ошибку в цепочке промисов
Здравствуйте! Я хочу цепочкой промисов обслуживать запрос.
Сначала нужно определить, пришел ли этот запрос на допустимый url, по результатам этой проверки совершать операции (обслуживать/не обслуживать). Эта проверка происходит в первом then (14 строка). Функция, которая определяет корректность запроса, отрабатывает нормально, в случае ошибки запроса Error можно просмотреть в аргументах второго then (который на 20 строке), но при этом catch, находящийся между ними, ничего не ловит. В чём тут проблема?
//проверка на допустимость гет запроса.
function isValidRequest(requestPath) {
let validReqs = ['/', '/index.html'];
return !!~validReqs.indexOf(requestPath) || new Error('400');
};
function getHandler(req) {
return new Promise((resolve, reject) => {
return resolve(req);
});
};
getHandler(pathname)
.then(()=>{
return isValidRequest(pathname); //отсюда должна вывалиться ошибка при неправильном запросе
})
.catch((e)=> { //не ловит
console.log('error');
})
.then(function() {
console.log(arguments); //из аргументов можно увидеть выпавшую ошибку
return fs.ReadStream(__dirname+'/index.html')
}).then((file) => {
sendFile(file, res);
});
|
var pathname = "/other_path";
function isValidRequest(requestPath) {
let validReqs = ['/', '/index.html'];
return !!~validReqs.indexOf(requestPath) || Promise.reject(new Error('400'));
};
Promise.resolve(pathname)
.then(isValidRequest)
.catch(e => alert("error"))
.then(function() {
console.log(arguments);
//return fs.ReadStream(__dirname+'/index.html')
})
.then(file => {
//sendFile(file, res);
});
Вместо new Error('400') надо Promise.reject(new Error('400')) иначе оно не воспринимает, что это ошибка |
Спасибо, понял проблему)
|
| Часовой пояс GMT +3, время: 19:10. |