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);
  • Вопрос задан
  • 18276 просмотров
Решения вопроса 1
peredozo
@peredozo Автор вопроса
Проблема была в том что я неправильно понимал принцип работы промисов. Думал они выполняются в момент первого вызова, оказалось в момент создания (этого не было написано в мануалах которые читал).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Потому что y обрабатывается только в случае успешного x, а у Вас оба промиса реджектятся
И так как второй остается не обработанным, он падает, когда очередь доходит до него
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
26 апр. 2024, в 09:18
500 руб./в час
26 апр. 2024, в 06:46
1500 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект