Promise

文章目录

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那么会终止函数,后面的内容不会执行。

    (使用nodejs12版本,提示TypeError: Promise.any is not a functionmdn显示nodejs16版本以后支持,更新了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捕捉到,需要Promisecatch函数。

catch返回的状态时fulfilled

mp.catch( function(){} )
// == mp.then( undefined, function() {} )
// 不同的地方在于catch可以放在后面,捕获这一整条Promise链的错误
4. finally
mp.finally( function() {} )

finally不会传递参数给函数

上一篇:Django—模板


下一篇:创建图书管理项目