node对Promise提供的监听函数

Promise被拒绝,但是又没有拒绝处理函数,node.js是不允许的。除非,设置了监听函数unhandledRejection,会监听到一个Promise被拒绝,且没有拒绝处理函数时执行。
相应的,提供另一个监听函数rejectionHandled
当一个Promise,没有直接绑定拒绝处理函数,却在之后,执行了拒绝处理函数。就会执行它。

process.on("unhandledRejection", function (reason, promise) {
   console.log('被拒绝了,并且没有处理。拒绝原因:'+reason.message)
})

process.on('rejectionHandled', function (promise) {
   console.log('处理了')
})


let reject1 = Promise.reject(new Error('服务端异常1'));

let reject2 = Promise.reject(new Error('服务端异常2'))

setTimeout(() => {
   reject1.catch((err) => {
      console.log('正在处理1。。。原因:' + err.message)
   })
}, 1000);

setTimeout(() => {
   reject2.catch((err) => {
      console.log('正在处理2。。。原因:' + err.message)
   })
}, 3000);

执行结果:

被拒绝了,并且没有处理。拒绝原因:服务端异常1
被拒绝了,并且没有处理。拒绝原因:服务端异常2
正在处理1。。。原因:服务端异常1
处理了
正在处理2。。。原因:服务端异常2
处理了

你可能感兴趣的:(javascript,promise,node.js)