四. 几个Promise常用API的介绍与使用
阅读原文时间:2023年07月10日阅读:1

四. 几个常用API的介绍与使用

excutor函数:同步执行 (resolve, reject) => {}
resolve函数:内部定义成功时我们调用的函数 value =>{}
reject函数:内部定义失败时我们调用的函数 reason => {}
说明:excutor会在Promise内部立即同步回调,异步操作在执行器中执行

onResolved函数:成功的回调函数 (value)=> {}
onRejected函数:失败的回调函数(reason) => {}
说明:指定用于得到成功value的成功回调和用于得到失败reason的失败回调
返回一个新的promise对象

onRejected函数:失败的回调函数(reason)=>{}
说明:then()的语法糖,相当于:then(undefined,onRejected)

value:成功的数据或promise对象
说明:返回一个成功/失败的promise对象

reason:失败的原因
说明:返回一个失败的promise对象

promises:包含n个promise的数组
说明:这个方法返回一个新的promise对象,该promise对象在iterable参数对象里所有的promise对象都成功的时候才会触发成功,一旦有任何一个iterable里面的promise对象失败则立即触发该promise对象的失败。这个新的promise对象在触发成功状态以后,会把一个包含iterable里所有promise返回值的数组作为成功回调的返回值,顺序跟iterable的顺序保持一致;如果这个新的promise对象触发了失败状态,它会把iterable里第一个触发失败的promise对象的错误信息作为它的失败错误信息。Promise.all方法常被用于处理多个promise对象的状态集合。

promises:包含n个promise的数组
说明:返回一个新的promise,第一个完成的promise的结果状态就是最终的结果状态

看起来race方法似乎没什么特别的用处,但在处理Web服务器中的超时逻辑时却十分方便,例如我们为一个 Promise(可能是一个数据库操作)定义了100ms 的执行时限,如果耗时超过这个时间就返回一个超时错误,在这种情况下就可以考虑使用race方法。

new Promise((resolve, reject) => {
    setTimeout(() = {
        // resolve('成功的数据')
        reject('失败的数据')
    },1000)
}).then(
    value =>{
        console.log('onResolved()1',value)
    }
).catch(
    reason =>{
        console.1og('onRejected()1', reason)
    }
)
// 产生一个成功值为1的promise对象
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])
pA11.then(
    values => {
        console.1og('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 onRejected()',reason )
    }
)