看了下vuex/src/store.js
dispatch最后是返回了Promise.all,registerAction的时候似乎也把所有action通过Promise.resolve转换成了promise对象
但有个问题是,如果action里的代码如果有错或者throw error,该错误并不能通过dispatch('someAction').then(()=>{}).catch((e)=>{console.log(e)})
捕获,是不是因为在Promise.resolve()的时候就出错了?
感觉还是对promise的机制理解不透彻...
应该是说在 Promise.resolve() 之前就出错了。它是先执行 handler 再包裹为 Promise,不知道为什么不包起来执行,有可能是 bug,得问官方。