Cc.loader.loadRes加载已经加载过的资源时卡住

当加载已经加载过的资源的时候,代码就卡住了,不能往下跑。
下面是在加载时打的log:

后面的数字可以理解为资源的标识,加载前打的log。
当“10004”加载后,再次加载,代码就不能往下执行了。
如果只加载一次“10004”,代码就能正常跑下去。

还是发代码出来看看

    cc.loader.loadRes('Data/character',function(err,data){
        if (err){
            cc.error(err.message || err);
            return;
        }
        var battleData = require('battleData');
        for (var i = 0; i < data.length; i++){
            let charData = data[i];
            battleData.characterData[charData.id] = charData;
        }
        for (var i = 0; i < battleData.characterList.length; i++)
        {   
            var charRes = battleData.characterData[battleData.characterList[i]].res;
            var charHeadPic = battleData.characterData[battleData.characterList[i]].headPic;
            self.x = i;
            cc.log('loading' + battleData.characterList[i]);
            cc.loader.loadRes('Character/'+ charRes +'_ske',dragonBones.DragonBonesAsset,function(err,DBAsset){
                if (err){
                    cc.error(err.message || err);
                    return;
                }
                let battleData = require('battleData');
                battleData.dragonBonesDBAsset[DBAsset._name] = DBAsset;
            });
            cc.loader.loadRes('Character/'+ charRes +'_tex',dragonBones.DragonBonesAtlasAsset,function(err,DBAtlasAsset){
                if (err){
                    cc.error(err.message || err);
                    return;
                }
                let battleData = require('battleData');
                battleData.dragonBonesDBAtlasAsset[DBAtlasAsset._name] = DBAtlasAsset;
            });
            cc.loader.loadRes('HeadPic/' + charHeadPic,cc.SpriteFrame,function(err,pic){
                if (err){
                    cc.error(err.message || err);
                    return;
                }
                let battleData = require('battleData');
                battleData.headPic[pic._name] = pic;
                let count = Object.getOwnPropertyNames(battleData.headPic).length;
                if (count === battleData.characterList.length + 1)
                {
                    cc.director.loadScene('Battle');
                }

            })
        }
    })

battleData的characterList里面如果只写一个100004就能load到下一个场景。
如果写2个,无法加载到下一个场景。

逻辑问题

这个判断是不会成功的,因为两次加载 10004 的 pic._name 都是一样的,所以 battleData.headPic 的 property 长度只会计算一次。。。

这些逻辑问题其实是可以通过 Chrome 调试工具很轻松定位到的,还麻烦发出问题之前,仔细检查,定位问题,只有定位到问题,你才能知道是自己逻辑问题还是引擎问题,别人也能更高效的帮你解决问题

不好意思,新手以前没写过代码,很多时候出了问题不太会找解决方案。
麻烦啦,抱歉!以后会多多注意的!