最近在项目中遇见一个 promise 使用方式的问题,大概需求是,页面多个表单,必须同时通过之后,才能发起网络请求; 验证过程,报了一个reject()错,谷歌浏览器报错进入断点调试模式。

错误如下:

promise的reject出现断点报错,resolved,Paused on promise rejection

问题原因:

如果在 Promise 处理异常之前就执行了 reject() ,就会认为这个promise没有处理异常的过程,然后就报错了,原因如下。

  • (1)只要没有在 Promise 的后面紧跟.catch或.then处理异常就会触发这个错误机制。
  • (2)不能在同步过程中触发 reject() ,因为这个时候异常处理还没有挂载到 promise 上,也就是说promise 不能立即执行 reject(),需要增加一个定时器,模拟异步调用解决这个问题。

代码如下:

promise的reject出现断点报错,resolved,Paused on promise rejection

解决如下:

promise的reject出现断点报错,resolved,Paused on promise rejection

相关文章: