我正在学习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")
)
答案 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()函数来捕获错误。