Promise
promise是用来封装异步操作的,可以用来解决回调地狱问题
1.Promise如何封装异步操作
代码演示
//new Promise(一个参数 是函数类型的)
//这个函数类型的参数接受两个参数,分别代表两个回调函数
//p1是一个创建好的Promise对象
var p1 = new Promise(function (resolve, reject) {
//进行异步操作...
console.log('start create')
setTimeout(function () {
console.log('定时器1执行了');
resolve('success1')
}, 2000)
})
p1.then(function (res) {
console.log('我成功了:' + res);
})
2.Promise如何解决回调地狱问题
代码演示
axios.post('接口1')
.then(res => {
//处理接口1的调用结果
// return 继续调用接口2
return axios.post('接口2')
})
.then(res => {
//处理接口2的调用结果
//...
})
在.then里边返回一个新的promise对象,就可以在外头用链式编程继续.then
这样就会把原来回调地狱的嵌套调用变成链式调用, 就解决了回调地狱的问题
3.Promise的状态
promise共有三种状态
1.刚new出一个Promise对象时,该对象是pending状态
2.执行了resolve回调函数后promise对象就会转成fulfilled状态
3.执行了reject方法就会转成rejected状态
状态的转换关系只能是
pending-->fulfilled
pending-->rejected