peredozo
@peredozo

Почему Uncaught (in promise)?

Не могу разобраться с Promise. Мануалы читал, как работает вроде понял, возможно не совсем правильно. Симулирую варианты ошибок. Не пойму почему выкидывает в консоль "Uncaught (in promise) Error: ee2". Что означает эта ошибка понимаю. Не понимаю почему и зачем она выбрасывается.

// Uncaught (in promise) Error: ee2

function test(ok1, ok2, ee) {

	var x = new Promise((res, rej) => {
		if(ok1) res(new Error('ok1'));
		else rej(new Error('ee1'));
	});

	var y = new Promise((res, rej) => {
		if(ok2) res(new Error('ok2'));
		else rej(new Error('ee2'));
	});

	x.then(r => {
		console.log(1, r);
		if(ee) throw new Error('tst');
		y.then(r => {
	  		console.log(2, r);
		}).catch(r => {
	  		console.log(3, r);
		});
	}).then(r => {
		console.log(4, r);
	}).catch(r => {
		console.log(5, r);
	});

}

test(0,0,1);
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
peredozo
@peredozo Автор вопроса
Проблема была в том что я неправильно понимал принцип работы промисов. Думал они выполняются в момент первого вызова, оказалось в момент создания (этого не было написано в мануалах которые читал).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Бородатый программер
Потому что y обрабатывается только в случае успешного x, а у Вас оба промиса реджектятся
И так как второй остается не обработанным, он падает, когда очередь доходит до него
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы