Promise 在原生模拟器上是多线程实现吗??
我在模拟器上调试,一个方法还没执行完,就不执行了。过一会回来执行,数据都变了。
我那个去,我找了一天。。。
竟然:
加一个cc.log(“000”); 解决了,妈呀。。。
加了一个log输出,就能正常保持异步同步顺序依次执行,这是什么原因?
这个问题一直不能得到解释,内心一直会有一块心病。
你敢不敢把代码发出来
不是多线程,但是是异步的
我感觉是你使用姿势不对,js是单线程的,所以肯定不是多线程,promise实际调用的是协程
后来我尝试了3个Promise,延迟同时执行while(true),可以证实不是多线程。
但是我项目中遇到的问题确实很奇怪,我在方法中想删除一个数组中的元素,第一行找到此元素的索引index,下一行,此索引index就不在数组中了。而且是必现。
此方法我还不能抽出来,因为大部分情况下,我写个小案例demo,都是正常的。
最终在方法外加一行cc.log(‘000’)输出解决。
你可能是把数组写到类的原型上了,多个实例操作的是一个protype原型上的数组。
JS原型链看一下
web上一切都很正常,只有native上,模拟器中才会出现。
这和原型链有关系吗?我使用es6写的代码,正常初始化数组,正常push操作。
如果web正常,native有问题的话,看下是不是target的问题。
什么target?