文章目录
1. Promise
1.1 Promise 的 基本使用
1. 创建
let mp = new Promise( function( resolve, reject ) {
} );
let mp = Promise.resolve( value );
let mp = Promise.reject( value );
2. 静态方法
-
Promise.all( iterable )
返回值:新的
promise
对象,对象的值为所有promise
对象结果组成的数组。(结果都是成功的)所有
iterable
参数里面的promise
对象都成功才会触发,
一旦有一个失败,就将错误信息作为返回promise
对象的值,此时promise
对象状态为失败。 -
Promise.allSettled( iterable )
返回值:新的promise
对象,对象值为所有promise
对象组成的数组。(结果有成功,也有失败的)
在所有promise
完成之后,将所有结果作为一个集合返回。 -
Promise.any( iterable )
返回值:返回一个新的promise
对象,对象的值为第一个成功的promise
对象的值。有一个成功就会返回。
如果没有成功的,又没有
catch
那么会终止函数,后面的内容不会执行。(使用
nodejs
12版本,提示TypeError: Promise.any is not a function
,mdn
显示nodejs
16版本以后支持,更新了16.9.1
之后,可以使用)( async function() { console.log('aaa') await Promise.any([]).then(val => console.log(val)) console.log('bbb') } )()
-
Promise.race( iterable )
返回值: 返回已给新的promise
对象,值为第一个成功或失败的promise
对象的值。
有一个成功或失败就会执行。 -
Promise.reject( reason )
返回值:返回一个状态为失败的promise
对象,值为reason
-
Promise.resolve( value )
返回值:返回一个状态为成功的promise
对象,值为value
函数 | 职能 |
---|---|
Promise.all | 所有Promise对象全部成功之后 |
Promise.allSettled | 所有Promise对象全部执行之后(无论成功失败) |
Promise.any | 所有Promise对象有一个成功就行 |
Promise.race | 所有Promise对象有一个执行完成就行(无论成功失败) |
Promise.reject | 返回一个rejected状态的Promise对象 |
Promise.resolve | 返回一个fulfilled状态的Promise对象 |
3. then、catch
let mp = new Promise( fucntion( res, rej ) {
res(1);
} )
mp.then( function( val ) { //...
},
function( err ) { //...
} );
then
,接受两个函数,在Promise
对象执行成功之后,执行第一个函数;对象状态为失败的时候,执行第二个函数。
mp.catch( function( err ) {
//...
} )
catch
,接受一个参数,在失败之后,捕获错误信息。
reject
抛出的错误不会被try/catch
捕捉到,需要Promise
的catch
函数。
catch
返回的状态时fulfilled
mp.catch( function(){} )
// == mp.then( undefined, function() {} )
// 不同的地方在于catch可以放在后面,捕获这一整条Promise链的错误
4. finally
mp.finally( function() {} )
finally
不会传递参数给函数