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秒输出4new 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状态。