ES6语法(七)Promise
1. Promise
ECMAscript 6 原生提供了 Promise 对象。Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息。
1.1. 说明
1.1.1. 单个异步程序
//检测机构
//resolve : 表示成功的状态
//reject : 表示失败的状态
new Promise((resolve,reject) => {
if(处理异步程序){
resolve([参数]);
}else{
reject([参数]);
}
})
.then(([参数]) => {
...
})
.catch(([参数]) => {
...
})
1.1.2. 多个异步程序
//解决多个异步程序
new Promise((resolve,reject) => {
if(处理异步程序){
resolve([参数]);
}else{
reject([参数]);
}
})
.then(([参数]) => {
return new Promise((resolve,reject) => {
if(处理异步程序){
resolve([参数]);
}else{
reject([参数]);
}
})
})
.then(([参数]) => {
return new Promise((resolve,reject) => {
if(处理异步程序){
resolve([参数]);
}else{
reject([参数]);
}
})
})
……
.then(([参数]) => {
if(处理异步程序){
resolve([参数]);
}else{
reject([参数]);
}
})
.catch([参数] => {
})
// 3秒输出1,再过两秒输出2,再过1秒输出3,再过0.5秒输出4
new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(1);
},3000)
})
.then((data)=>{
alert(data);
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(2);
},2000)
})
})
.then((data)=>{
alert(data);
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(3);
},1000)
})
})
.then((data)=>{
alert(data);
setTimeout(()=>{
alert(4)
},500)
})
1.2. Promise的对象方法
then() : 当promise返回resolve状态时,你可以调用then方法进行后续的操作
catch() : 当promise返回reject状态时,你可以调用catch方法进行后续的操作
1.3. Promise当中的三种状态
pending: 初始状态,不是成功或失败状态。
fulfilled: 意味着操作成功完成。
rejected: 意味着操作失败。
1.4. Promise的静态方法
Promise.all() : 当all中所有的Promise对象都返回resolve时,这个promise对象才返回resolve状态。如果其中有一个promise对象返回reject时,当前的promise对象返回reject状态。