承诺后向.then()提供多个回调函数

时间:2019-05-17 09:58:24

标签: javascript promise callback es6-promise ecma

我正在学习React,在一个示例中,使用了JavaScript的Promise API。 .then()函数应仅将一个参数用作回调函数,该回调函数接收resolve的值,但.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 :(得分:0)

Promise是一个非常强大的工具,可以帮助您处理异步代码,例如上面的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()函数来捕获错误。