每天学点ES6 —— Promise 几个实用的方法

已发ES6文章:

1~14

15

16

上篇了解了 Promise 和它的 then 方法,本篇介绍它的其他方法。

catch( fn(error) )

catch 方法用来专门传递 reject 回调函数,以处理错误信息。

Promise 对象在处理错误信息时是可以传递的,比如有多个then调用的情况,如果第一个then没有指定reject,错误信息就会被传递到第二个then处理,第二没有传到第三个,依次类推。所以往往我们只需要一个处理函数即可,catch方法就是为了方便捕获错误而生。

注:实际上 catch 方法调用的是 then(null,reject)

//下面的错误信息穿过了2个then方法最后被catch捕获

var p=new Promise(function(resolve,reject){

 reject(5)

});

p.then(function(){

 console.log(1);

}).then(function(2){

 console.log(2)

}).catch(function(x){

 console.log(x)

});

//5

Promise.all( arr )

此方法用来创建一个异步池,执行多个异步操作,当全部成功时,执行resolve,否则一个失败则执行reject

参数 arr 是个数组(或具有Interator接口),每个元素都是一个Promise实例,如果不是则会被 Promise.resolve转为Promise对象的实例。

Promise.race( arr )

类似 all 方法,此方法在其中一个异步执行完成后结束,无论是resolve还是reject都不再执行其他的异步操作。

Promise.resolve( [x] )

此方法将参数转为一个promise对象的实例。

等同于一个直接resolve的Promise

Promise.resolve( x);

//等同于

new Promise(function(resolve){

 resolve(x)

})

注:

  • 当无参数时,返回个promise实例

  • 当参数是个Promise实例时,直接返回

Promise.reject( arr )

类似 Promise.resolve

【关注一下不迷路~】


每天学点ES6 ——  Promise 几个实用的方法

【html】【css】【html】【css】【javascript】【html】【javascript】【css】【javascript】【css】


分享到:


相關文章: