Promise对象是一种用于异步编程的解决方案。它允许你将异步操作的代码写在Promise的then方法里,并在异步操作完成时获得结果。Promise有三种状态:pending(进行中)、fulfilled(已完成)和rejected(已失败)。在Promise对象刚刚创建时,它的状态是pending,一旦异步操作完成,它的状态就会变为fulfilled或rejected。你可以使用Promise.resolve()和Promise.reject()来分别创建一个已完成或已失败的Promise对象。
例如,你可以这样使用Promise来获取一个网页的内容:
const getPageContent =url => {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.onload = () => {
if (xhr.status === 200) {
resolve(xhr.response);
} else {
reject(new Error(xhr.statusText));
}
};
xhr.onerror = () => {
reject(new Error('Network error'));
};
xhr.send();
});
};
getPageContent('http://example.com')
.then(response => {
console.log(response);
})
.catch(error => {
console.error(error);
});
在这个例子中,getPageContent函数返回一个Promise对象。如果网络请求成功,则Promise的状态会变为fulfilled,并调用then方法里的回调函数;如果网络请求失败,则Promise的状态会变为rejected,并调用catch方法里的回调函数。