花了一周时间, 搞清了一个只在iOS可能出现的致命bug(长文慎入, JSC, Await/Promise, Mircotasks)

是大佬,我死了

早点转unity, 早点转早点解脱

网上搜一下, 很多的
https://www.baidu.com/s?ie=UTF-8&wd=promise%20polyfill

这是大佬

我们会尝试在 2.2.1 启用 JavaScriptCore,来彻底避免这个错误。

应该是 “启动 V8” 或者 “弃用 JavaScriptCore” 吧?

FYI, Egret和Laya的做法是找了一个 setTimeout 实现的 promise polyfill

嗯。说错了。改由 2.2.0 启用 V8

1赞

mark

真大佬啊,我很久之前就发现了这个问题,一直没能力解决。

这是我在3月29日发的帖子,就是反应的这个问题:
https://forum.cocos.com/t/promise/75783

我当初还以为是多线程呢?Promise里面的代码怎么不是像正常的逻辑顺序执行的,后来我是通过加了一句console.log()解决的,不明所以。

楼主大佬您好,我和你确认一下,你这个解决就是,类似这样的处理:

(()=>{
    let k = 0;
    settimeoutPromise(0).then(()=>{
	k = 1;
    })
    console.error(k);	
    console.error(k); 
  })();

是吗?

promise-polyfill

大佬 喝茶

请问,目前苹果允许使用第三方虚拟机了吗?例如游戏引擎使用vd8。
政策上目前是怎样的?

苹果禁用的是热更,不是虚拟机

上传@panda说,2.x不支持ios10以下是因为ios10以下不支持TypedArray

ios使用v8,是不是就能解决原生平台2.x不支持ios10以下的问题?@jare

iOS 10 以下很多都是 32 位设备,V8 不能跑在 32 位。说白了苹果要让你换机子,你不得不换的。

给大佬递茶,

战术插眼

感谢分享

服气!让我找个bug还行,但像这样一步步记录下来就太难了

我帮你找了一篇文章
https://blog.csdn.net/Phoenix_19880101/article/details/101639175
刚开始我也没搞明白 使用setTimeout实现Promise polyfill到底是什么意思

说白了就是把Promise这个类使用js重新实现一遍,避免默认调用jsc导致出现bug

我测试了一下没有问题出现了,感谢楼主细致的bug排查,非常敬佩