错误复现
代码
this.map = new Map();
var self = this;
for (let i = 0; i < 2; i++) {
cc.loader.loadRes("test",function(){
self.map.set("1","1")
})
}
console.log(this.map);
执行结果
错误分析
cocos中有很多像loadRes这样的异步方法,造成这样的这样执行结果的原因就是因为,for循环里的代码还没有执行完,就已经执行了console这行代码
解决办法
1、确保赋值与使用两项操作之间的时间足够长,比如加载场景时、对数组进行赋值,到进入游戏场景时在进行使用
2、在确保逻辑的情况下,使用回调函数解决问题
技术交流
CocosCreator技术交流群:548823168