Предоставление нескольких функций обратного вызова для .then () после обещания - PullRequest
0 голосов
/ 17 мая 2019

Я изучал React и в примере использовался API Promise javascript. функция .then () должна принимать только один аргумент в качестве функции обратного вызова, которая получает значение resol, но как .then () принимает 2 аргумента в качестве функций. Может кто-нибудь сказать, пожалуйста, как это работает?

Я не мог понять, как это работает, потому что всегда была ошибка при попытке этого кода. Однако он работает в браузере.

//defining function getFakeMembers
const getFakeMembers = count => new Promise((resolves, rejects) => {
const api = `https://api.randomuser.me/?nat=US&results=${count}`
const request = new XMLHttpRequest()
request.open('GET', api)
request.onload = () =>
(request.status === 200) ?
resolves(JSON.parse(request.response).results) :
reject(Error(request.statusText))
request.onerror = (err) => rejects(err)
request.send()
})
//calling function getFakeMembers
getFakeMembers(20).then(
members => log(`successfully loaded ${members.length} members`),
error => log("encountered an error loading members")
)

1 Ответ

0 голосов
/ 17 мая 2019

Promises - очень мощный инструмент, который помогает вам работать с асинхронным кодом, как в приведенном выше примере запроса GET.

Я настоятельно рекомендую вам проверить эту статью, которая была очень полезна для меня: https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html

Как указано в документации, функция .then () может иметь 2 аргумента: onFulfilled и onRejected. Второй является необязательным.

https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Promise/then

По разным причинам, на мой взгляд, лучше использовать функцию .catch () для отлова ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...