promise API
1.promise构造函数:promise(excutor){}
excutor函数:同步执行(resolve,reject) => {}
resolve函数:内部定义成功时我们调用的函数 value => {}
reject函数:内部定义失败时我们调用的函数reason => {}
特别说明:excutor会在promise内部立即同步回调,异步操作在执行器中执行
2.promise.prototype.then方法(onResolved,onRejected) => {}
onResolved函数:成功的回调函数(vale) => {}
onRejected函数:失败的回调函数(reason) => {}
说明:指定用于得到成功value的成功回调和用于得到失败reason的是失败回调
返回一个新的promise对象
3.promise.prototype.catch方法:(onRejected) => {}
onRejected函数:失败的回调函数(reason) => {}
说明:then()的语法糖,相当于then(undefined,onRejected)
4.Promise.resolve方法:(vale) => {}
value:成功的数据或promise对象
说明:返回一个成功/失败的promise对象
5. Promise.reject方法(reason) => {}
reason:失败的原因
说明:返回一个失败的promise对象
6. Promise.all方法: (promises) => {}
promises: 包含n个promise的数组
说明: 返回一个新的promise, 只有所有的promise都成功才成功
7. Promise.race方法: (promises) => {}
promises: 包含n个promise的数组
说明: 返回一个新的promise, 第一个完成的promise的结果状态就是最终的结果状态(并非是数组中的第一个,而是第一个完成的promise)
new Promise((resolve, reject) => { setTimeout(() => { // 这两个方法只能执行一个,因为只能改变一次状态 resolve('成功的数据') //resolve就像是一个传递数据的运输机 reject('失败的数据') }, 1000) }) .then( value => { console.log('onResolved()1', value) } ) .catch( reason => { console.log('onRejected()1', reason) } ) const p1 = new Promise((resolve, reject) => { resolve(1) }) const p2 = Promise.resolve(2) const p3 = Promise.reject(3) // p1.then( value => {console.log(value)} ) // p2.then( value => {console.log(value)} ) // p3.catch( reason => {console.log(reason)} ) //const pAll = Promise.all([p1,p2,p3]) const pAll = Promise.all([p1, p2]) pAll.then( values => { console.log('all onResolved()', values) }, reason => { console.log('all onRejected()', reason) } ) const pRace = Promise.race([p1, p2, p3]) pRace.then( value => { console.log('race onResolved()', value) }, reason => { console.log('race onResolved()', reason) } )