Я новичок в JavaScript. Когда мы используем .then и .catch, могу я узнать, почему мы пишем это как
const getIDs = new Promise((resolve, reject) => {
setTimeout(() => {
resolve([523, 883, 432, 974]);
}, 1500);
});
Почему написано так:
getIDs
.then(IDs => {
console.info(IDs);
})
.catch(error => {
console.info('Error!!');
});
Вместо чего-то вроде:
getIDs.then(IDs => {
console.info(IDs);
});
// note: access getIDs again!
getIDs.catch(error => {
console.info('Error!!');
});
Какая за этим логика? Большое спасибо!
@PaulFitzgerald У вещей "есть цвета" по ряду причин - голубое небо на самом деле довольно сложная тема. Однако речь идет о том, чтобы задать уместный вопрос ..
Большое спасибо! Значит, оба синтаксиса одинаковы? Я не понимаю, почему в первом примере мы используем .then, а сразу после него .catch. Then и catch - это оба метода объекта getIDs, но почему мы вызываем два метода напрямую, за которыми следуют друг за другом, как .then (). Catch ()?
во многом это связано с историей обратного вызова javascript (что имеет свои плюсы / минусы)
@Ying изучает цепочку обещаний javascript.info/promise-chaining
Вы ищете концепцию «цепочки методов»?
Примечание: [примерно] такая же разница с использованием: then(..).then(..) против x.then(..); x.then(..);. И да, они разные.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Предложение then создает новое обещание, поэтому вызов catch для этого последующего обещания может перехватить различные исключения.
Во втором фрагменте вы перехватываете исключения только из исходного обещания getIDs.
Используя это:
getIDs
.then(IDs => {
console.info(IDs);
})
.catch(error => {
console.info('Error!!');
});
вы также обнаруживаете ошибки предыдущих функций then при использовании:
getIDs.then(IDs => {
console.info(IDs);
});
// note: access getIDs again!
getIDs.catch(error => {
console.info('Error!!');
});
вы ловите только ошибки от getIDs.
просто так оно и есть. почему трава зеленая? Почему небо голубое? :-D