美文网首页
cocos creator 原生平台下,Promise异常未处理

cocos creator 原生平台下,Promise异常未处理

作者: 正向反馈 | 来源:发表于2020-03-02 16:15 被阅读0次
// cocos 使用(promise.min.js)[https://github.com/taylorhakes/promise-polyfill], 对于未处理的rejection,默认是不处理的
// 这里捕获未处理的rejection,并抛出异常
;(Promise as any)._unhandledRejectionFn = function(rejectError) {
     throw rejectError
};

修正

android下,js引擎自带了Promise, 所以实际使用的是js引擎的Promise,这个是Native Code.
web标准下window有事件可以处理未处理的rejection

window.addEvent('unhandledrejection', (rejection) => {})

firefox, chrome下都可以正常运行。
但是!chrome下在dev-tool下执行的Promise.reject并不会触发该事件。
经查stackoverflow (https://stackoverflow.com/questions/40026381/unhandledrejection-not-working-in-chrome)[https://stackoverflow.com/questions/40026381/unhandledrejection-not-working-in-chrome]发现,大概是跟chrome的同源策略有关。
chrome的同源策略执行严格。

原生平台下可能也是这个原因,但没有查出具体的问题和解决方法。期望有知道的网友可以指出。

那最终,怎么处理这个问题呢?

有个取巧的方案, 就是使用promise-polyfill替换标准的Promise对象。

相关文章

网友评论

      本文标题:cocos creator 原生平台下,Promise异常未处理

      本文链接:https://www.haomeiwen.com/subject/snevkhtx.html