-
Promise代表一个异步操作。
- 创建一个
Promise实例
const promise = new Promise((resolve,reject) => {
...
if (/*异步操作成功*/) {
resolve(value);
} else {
reject(error)
}
})
promise.then((value) => {
...
}).catch((error) => {
...
})
-
Promise构造函数接收一个参数,该参数是一个异步执行的函数。这个函数有两个参数resolve和reject。
- 当异步操作执行成功时将会调用
resolve,resolve的作用是将promise对象的状态由“未完成”变为“成功”,此时将会调用resolved(成功)状态的回调函数,该回调函数是then方法的第一个参数。该回调函数的参数值可通过设置resolve函数的参数传递过来。
- 当异步操作执行失败时将会调用
reject,reject的作用是将promise对象的状态由“未完成”变为“失败”,此时将会调用rejected(失败)状态的回调函数,该回调函数是then方法的第二个参数。但一般不会使用then的第二个参数,而是使用catch方法。因为catch方法不仅可以捕获到一开始promise对象中异步操作失败的错误,还能捕获到前面then方法中的错误。
- 使用
Promise封装简化版axios中get方法:
const myAxios = {
get:function(url) {
return new Promise((resolve,reject) => {
const xhr = new XMLHttpRequest();
xhr.open('GET',url,true);
xhr.onreadystatechange = function() {
if (this.readyState !== 4) {
return;
}
if (this.status === 200) {
resolve(this.response);
} else {
reject(new Error(this.statusText));
}
}
xhr.send();
})
}
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。