1.Promise的含义 Promise 是异步编程的一种解决方案,和传统的回调函数引发的回调地狱问题,在Promise中得到了很好的解决 Promise可以理解为一个容器,里面保存了未来才会结束的事件,(重要)一般是获取发送AJAX通信,获取数据操作事件比较长的异步操作 2.Promise的特点 对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。 一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。 3.Promise的缺点 首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消 其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部 当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成) Promise的语法 Promise对象是一个构造函数,用来生成Promise实例
代码语言:javascript复制 let promise=new Promise(function(resolve,reject){
//some code 这里写的代码会立即执行
// 发送一个ajax请求
let xhr=new XHLHttpRequest() //新建xml对象
xhr.open("methond","url") //发送请求
xhr.onreadystatechange=function(){ // 状态发生改变时
if(xhr.readyState===4){
if(xhr.status===200){
let response=xhr.responseText // 拿到响应文本
resolve(response)
}else{
reject("获取数据错误")
}
}
}
xhr.send()//发送数据给服务端,post请求时发送的参数
})