#javascript
#javascript
Вопрос:
Делают ли они, по сути, одно и то же? Я наткнулся на это в примере с обещанием, и лектор вернул выборку, но разве пример 1 не был бы еще одним жизнеспособным способом сделать это?
1
fetch('url1')
.then(data => data.json())
.then(() => {
fetch('url2')
.then((response) => {
// do things
})
})
2
fetch('url1')
.then(data => data.json())
.then(() => {
return fetch('url2')
})
.then((response) => {
// do the same thing but at same scope
});
Комментарии:
1. Да, это было бы так, но обычно люди предпочитают избегать вложенности, поскольку это приводит к увеличению количества отступов с увеличением количества цепочек, что приводит к тому, что код занимает половину экрана.
2. Они не совсем идентичны, но довольно близки. В общем, нет причин делать # 1 вместо # 2, и есть много причин делать # 2 вместо этого. Единственная причина делать # 1 — это если вы не хотите, чтобы внешнее обещание действительно ожидало
url2
и завершало всю цепочку
Ответ №1:
В примере 1 второй then()
решает undefined
В примере 2 второе then()
принимает обещание, возвращенное вторым fetch
, и поэтому последнее then
может возвращать что-то полезное в возвращаемом значении верхнего уровня.
В любом случае. Это довольно подробный код, который мог бы быть намного понятнее с помощью async
and await
.