promise解决回调地狱的方法之一
回调地狱。就是多个函数循环箱套 。没有了可读性和可维护性,代码么有问题,只是不好后期维护
(
promise 承诺es6
就是解决回调地狱的方法之一 能把回到地狱写的优雅一点。让代码拥有可读性和可维护性
promise 有三个状态,一旦状态确定就不可更改。1-2;1-3
1 承诺继续 pending 异步事情正在执行-状态
2 承诺成功 fulfilled 异步执行执行成功-结果 data
3 承诺失败 rejected 异步事情执行失败-结果 error
promise 语法:
let p1=new Promise ( function(){我们要准备做的事情} )
)
解决回调地狱的方法:
**1 promise 有三个状态.两种结果。**
状态确定后不可更改,
**状态:继续-成功、继续-失败**
**结果:**
承诺继续 -padding
**1 成功-fulfilled
2 失败-rejected**
语法:(function函数内部接收两个参数
resolve是成功的回调--then ,reject是失败的回调--catch,
两个方法:一个叫then函数 一个叫catch函数)
实例化对象里面是异步的事情
let p=new Promise(function(resolve,reject){
//这里面执行异步操作
resolve()//成功执行then
reject()//失败执行catch
})
p.then(function(){})
p.catch(function(){})
运行如下:简单语法的运行,
<script type="text/javascript">
// Promise 解决回调地狱的方法
let p=new Promise(function(resolve,reject){
//执行异步操作
if(true){//成功的执行
resolve(value)//实参
}else{//失败执行
reject(error)//实参
}
})
// 使用
//对应的成功的函数 resolve--then 函数
p.then(function(res){
console.log('成功打印')
})
// 对应失败的函数 reject --catch 函数
p.catch(function(res){
console.log('失败打印')
})
</script>
还可以直接执行异步的ajax请求
<script type="text/javascript">
// Promise 解决回调地狱的方法
let p = new Promise(function(resolve, reject) {
//执行异步操作
// 发送一个ajax请求
let xhr = new XMLHttpRequest();
xhr.open('get', url)
xhr.onreadystatechange = function() { //状态码改变的时候会执行的判断语句
// 当http响应状态码请求失败的时候
if (xhr.status === 404) {
reject("地址不存在") //实参
}
// http请求成功时候,并且浏览器也解析响应体完毕
// 就可以正常调用下变的函数
if (xhr.status===2000&&xhr.readyState===4) { //成功的执行
resolve(xhr.responseText) //实参
}
}
xhr.send()
})
// 使用
//对应的成功的函数 resolve--then 函数
p.then(function(res) {
console.log('成功打印'+res)
})
// 对应失败的函数 reject --catch 函数
p.catch(function() {
console.log('失败打印')
})
</script>