快被这个loadres搞疯掉了,请大神帮忙看看问题在哪里

这个方法是想读取一个level.txt,然后每行存成一个数组元素,再返回给其他方法使用level数组,但这个方法的返回数组一直是空的,实际上在loadRes里打印levelSet是赋值成功了,而且loadRes里的匿名函数也加了bind(this),我在loadRes外面var self=this,在loadRes里用self.levelSet也是能赋值成功,出来打印this.levelSet还是空的,这个是怎么回事呢?
下面是代码:

1、用bind(this):
_loadLevel:function(){
this.levelSet = [];
cc.loader.loadRes(‘level’,function(err,data){
if(err){
cc.error(err.message||err);
return;
}
if(data.indexOf(’\r’)>0)
this.levelSet = data.split(’\r\n’);
else
this.levelSet = data.split(’\n’);
}.bind(this));
console.log(this.levelSet);
return this.levelSet;
},

2、用var self=this
_loadLevel:function(){
var self = this;
this.levelSet = [];
cc.loader.loadRes(‘level’,function(err,data){
if(err){
cc.error(err.message||err);
return;
}
if(data.indexOf(’\r’)>0)
self.levelSet = data.split(’\r\n’);
else
self.levelSet = data.split(’\n’);
});
console.log(this.levelSet);
return this.levelSet;
},

可能问题有点小白,但真的被这个作用域搞晕掉了

loadRes 是异步的,也就是说你必须在 loadRes 里面才能拿到结果。外面的代码会先执行,那时 loadRes 还没结束,所以外面是拿不到的。

没错,我也发现了,如果我在loadres里也打印,发现空的结果先打印,赋值的结果后打印出来。

为什么配置文件要用text文件,为啥不直接用.js文件 或者.json文件

txt文本文件方便策划编辑

用async 跟 await 做成同步效果

策划用excl编辑,写个工具导出.js或者.json