最近在项目中遇见一个 promise 使用方式的问题,大概需求是,页面多个表单,必须同时通过之后,才能发起网络请求; 验证过程,报了一个reject()错,谷歌浏览器报错进入断点调试模式。
错误如下:
问题原因:
如果在 Promise 处理异常之前就执行了 reject() ,就会认为这个promise没有处理异常的过程,然后就报错了,原因如下。
- (1)只要没有在 Promise 的后面紧跟.catch或.then处理异常就会触发这个错误机制。
- (2)不能在同步过程中触发 reject() ,因为这个时候异常处理还没有挂载到 promise 上,也就是说promise 不能立即执行 reject(),需要增加一个定时器,模拟异步调用解决这个问题。