美文网首页
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