Показать сообщение отдельно
  #1 (permalink)  
Старый 17.12.2016, 13:14
Аспирант
Отправить личное сообщение для innowed Посмотреть профиль Найти все сообщения от innowed
 
Регистрация: 27.03.2015
Сообщений: 78

не могу поймать ошибку в цепочке промисов
Здравствуйте! Я хочу цепочкой промисов обслуживать запрос.
Сначала нужно определить, пришел ли этот запрос на допустимый 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);
	});

Последний раз редактировалось innowed, 17.12.2016 в 13:21.
Ответить с цитированием