异步编程的方式,可以解决回调地狱的问题
特点:
有三个状态
pending(正在进行)到fulfilled(已经成功)--成功---resolve
pending(正在进行)到rejected(已经失败)--失败---reject
接收一个回调函数 里面有两个参数
回调地狱
setTimeout(function() {
console.log(1);
setTimeout(function() {
console.log(2);
setTimeout(function() {
console.log(3);
setTimeout(function() {
console.log(4);
},4000)
},3000)
},2000)
},1000)
解决回调地狱
const p = new Promise(function (resolve, reject) {
setTimeout(function () {
console.log(1);
resolve(2)
}, 1000)
})
p.then(function (value) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
console.log(value);
resolve(3)
}, 2000)
})
}
).then(
function (value) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
console.log(value);
reject(4)
}, 3000)
})
}
).then(
function (value) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
console.log(value);
}, 3000)
})
}, function (error) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
console.log('失败' + error);
}, 3000)
})
}
)
Promise.then()方法
两个参数都是函数,第一个是成功的函数,第二个是失败的函数
Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。