khusamov
@khusamov
ReactJS, NodeJS, TypeScript, Sencha ExtJS

Как предотвратить вывод ошибок по throw внутри секций then библиотеки Promise Q?

Я использую библиотеку промисов Q в Ангуляре 1.
У меня есть такой код:

$q((resolve, reject) => {
  resolve(1);
}).then(function(ret) {
	throw new Error("o_O");
}).catch(function(err) {
	console.log(err);
});


В консоли выводится ошибка throw new Error("o_O");
А затем эта ошибка повторно выводится console.log(err);

82dd14a70204455a9003efd8f344af87.PNG

Я хочу чтобы выводилась ошибка только в секции catch.

Как предотвратить вывод ошибок по throw внутри секций then?

Пример кода:
plnkr.co/edit/MiH48Qb7tfCEW31mz1ou?p=preview
Для воспроизведения проблемы нужно сначала открыть консоль браузера, потом запустить пример и в консоли будет видно, что сначала выводится по throw, а потом по console.log).
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
khusamov
@khusamov Автор вопроса
ReactJS, NodeJS, TypeScript, Sencha ExtJS
Вроде нашел способ обойти эту неприятность. Вместо throw можно воспользоваться $q.reject. Тогда хотя бы свои собственные исключения не будут дублироваться.

$q((resolve, reject) => {
    resolve(1);
}).then(function(ret) {
    //throw new Error("o_O");
    return $q.reject(new Error("o_O"));
}).catch(function(err) {
    console.log(err);
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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