Я только начал изучать JavaScript и обещания несколько часов назад, и я начинаю понимать «поток», но некоторые детали все еще неясны.Давайте рассмотрим следующий пример:
function OnRejected(var){
return console.log("This is an error " + var)
}
Promise.reject(2).then(function(a){return a*2})
.then(function(a){return a+5})
.then(function(a){return a*3})
.then(console.log)
.catch(OnRejected)
Результат приведенного выше кода: это ошибка 2
Пример выше работает просто отлично.У меня такой вопрос: если я не вызываю функцию и пытаюсь напрямую вызвать "console.log (" это ошибка ")" внутри перехвата, почему это не получается?Например:
Promise.reject(3).then(function(a){return a*2})
.then(function(a){return a+5})
.then(function(a){return a*3})
.then(console.log)
.catch(console.log("This is an error"))
Результат:
(узел: 39515) UnhandledPromiseRejectionWarning: 3
Это ошибка
(узел: 39515) UnhandledPromiseRejectionWarning: необработанное отклонение обещания.Эта ошибка возникла либо из-за того, что внутри асинхронной функции возникла ошибка без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch ().(идентификатор отклонения: 2)
(узел: 39515) [DEP0018] Предупреждение об устаревании: отклонение необработанного обещания устарело.В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом выхода.
Процесс завершен с кодом завершения 0
Я полагаю, что это больше, чем "обещания"мое отсутствие знаний о функциях в JS, console.log и console.log («что угодно»).Любая помощь или совет очень ценятся.