我不知道的promise

  • promise在resolve以后 再抛出错误并不会被捕获,等于没有抛出,我的理解是状态改变以后就不会再次改变。promise

  • 错误具备冒泡的特性,会一直向后传递,直到被捕获为止,可是不会冒泡到全局。跟传统的try catch 语句不一样的是,若是没有使用catch 语句指定错误处理的回调函数,promise 对象抛出的错误不会传递到外层代码
  • Catch方法返回的仍是一个promise 对象,所以后面还能够接着调用then方法,若是没有报错则跳过该catch 方法,须要注意的是,若是在catch 语句之后再抛出错误则没法捕获。
  • done 方法老是出于回调链的微端,保证抛出任何可能出现的错误(向全局)
  • 值穿透:若是在then方法或是catch方法中传入的不是函数则会穿透,像是没有传入。
  • 实现并行,很差的作法是使用forEach遍历执行promise,能够使用Promise.all
    getAsyncArr().then(promiseArr => { return promise.all(promiseArr); }) .then(res => console.log(res))
  • 实现串行执行,那咱们能够利用reduce来处理串行执行
    var pA = [ function() {return new Promise(resolve => resolve(1))}, function(data) {return new Promise (resolve(1 + data))} ] pA.reduce((prev, next) => prev.then(next).then(res=>res), Promise.resolve()).then(res => console.log(res))函数

相关文章
相关标签/搜索