微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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不会传递参数给函数

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐