Дополнительно
Возвращая Аксиос обещание от функции
Может кто-то пожалуйста, объясните, почему возвращения Аксиос обещают еще и сцепление, но, возвращаясь после применения, тогда()/поймать()` метод, не?
Пример:
в
const url = 'https://58f58f38c9deb71200ceece2.mockapi.io/Mapss'
function createRequest1() {
const request = axios.get(url)
request
.then(result => console.log('(1) Inside result:', result))
.catch(error => console.error('(1) Inside error:', error))
return request
}
function createRequest2() {
const request = axios.get(url)
return request
.then(result => console.log('(2) Inside result:', result))
.catch(error => console.error('(2) Inside error:', error))
}
createRequest1()
.then(result => console.log('(1) Outside result:', result))
.catch(error => console.error('(1) Outside error:', error))
createRequest2()
.then(result => console.log('(2) Outside result:', result))
.catch(error => console.error('(2) Outside error:', error))
<script src="https://unpkg.com/axios@0.16.1/dist/axios.min.js"></script>
в
https://jsfiddle.net/nandastone/81zdvodv/1/
Я понимаю, что методы обещание должна возвращать значение, которое будет прикован, но в чем разница между этими двумя методами вернуть?
26
1
Ваш первый пример возвращает исходный посыл. Ваш второй пример возвращает разные обещаю, созданный путем вызова
поймать
.Критические различия между ними:
В вашем втором примере, вы'повторно не передавая значение разрешения, поэтому обещаем возвращаемые", затем "разрешить с" неопределенным " (возвращаемое значение из консоли.журнал`).
В вашем втором примере, вы'повторного преобразования отказов в разрешениях с "неопределенным" (с возвратом результата из консоли.журнал
из
поймать). В
поймать` обработчик, который не'т выбросить или вернуть обещаю, что'отказала преобразует отказ в разрешении.Одна из ключевых вещей о обещание цепи заключается в том, что они преобразуют результат; каждый вызов
то
илипоймать
создает новый посыл, и их обработчики могут изменить то, что's отправлено вниз по течению, в результате через них проходит.Обычная картина действительно можно было бы вернуть результат услуги, но и для функции в цепи, чтобы намеренно превратить в результат или передать его на. Как правило, вы не'т иметь обработчик "уловить" только в терминале конце цепочки, если вы'повторно использовать его, чтобы исправить ошибку (намеренно конвертировании отказ в разрешении).
Если вы хотите просто войти то, что прошел через то же время позволяя абонентам видеть это, но сделал ** хочу вернуть результат в цепь по каким-то причинам, вы'd сделать это:
или с помощью "броска":