永发信息网

JS问题xhr.onload = function()

答案:2  悬赏:0  手机版
解决时间 2021-02-26 17:16
Me_Event_date.loadMapData = function(mapId) {
if (mapId > 0) {
var filename = 'Map%1.json'.format(mapId.padZero(3));
this._mapLoader = ResourceHandler.createLoader('data/' + filename, this.loadDataFile.bind(this, 'me_events', filename));

}
};

Me_Event_date.loadDataFile = function(name, src) {
var xhr = new XMLHttpRequest();
var url = 'data/' + src;
xhr.open('GET', url);
xhr.overrideMimeType('application/json');
xhr.onload = function() {
if (xhr.status < 400) {
event_name = JSON.parse(xhr.responseText);
Me_Event_date.onLoad(event_name);
}
};
xhr.onerror = this._mapLoader || function() {
Me_Event_date._errorUrl = Me_Event_date._errorUrl || url;
};
xhr.send();
};

Me_Event_date.onLoad = function(object) {
$gameVariables._data[11] = object.events;
};

我想要$gameVariables._data[11] = object.events;这个数组。
Me_Event_date.loadMapData(1) 这样是可以让$gameVariables._data[11] = object.events;

不过问题不是马上得到。Me_Event_date.loadMapData(1)这条代码下面的内容都被执行了,之后才得到$gameVariables._data[11] = object.events;
这样就太迟了
最佳答案
你是使用异步了吧,这个默认不写好像就是异步吧
xhr.open('GET', url);
要明确吧
xhr.open('GET', url, false);
全部回答
我建议用promise改造下代码 Me_Event_date.loadDataFile = function(name, src) { var xhr = new XMLHttpRequest(); var url = 'data/' + src; xhr.open('GET', url); xhr.overrideMimeType('application/json'); xhr.onload = function() { if (xhr.status < 400) { event_name = JSON.parse(xhr.responseText); Me_Event_date.onLoad(event_name); } }; xhr.onerror = this._mapLoader || function() { Me_Event_date._errorUrl = Me_Event_date._errorUrl || url; }; xhr.send(); }; 可以改成 Me_Event_date.loadDataFile = function(name, src ) {     return  new Promise(function(resolve ,reject){         var xhr = new XMLHttpRequest();         var url = 'data/' + src;         xhr.open('GET', url);         xhr.overrideMimeType('application/json');         xhr.onload = function() {         if (xhr.status < 400)             resolve(JSON.parse(xhr.responseText))             };         xhr.onerror = function(e){             reject(e)         }         xhr.send();     }).then(function(event_name){                 Me_Event_date.onLoad(event_name);     }).catch(function(){         (this._mapLoader || function() {                 Me_Event_date._errorUrl = Me_Event_date._errorUrl || url;                 })();     }) };如果要使用只需要 this.loadDataFile.bind(this, 'me_events', filename).then(function(){ loadMapData(1) $gameVariables._data[11] = object.events; })
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
放了5,6个月的香烟还能抽吗?
脸上过敏脱皮很干怎么办
波旋乡我想知道这个在什么地方
关于城市维护建设税的适用税率,下列表述错误
幼儿园家长会会议效果反馈
一质点沿X轴作直线运动,其加速度为 a=-Aω^2
单选:本案例中求助者存在的内心冲突的数量是
唯利是图什么意思
月季家具超市北门地址有知道的么?有点事想过
贷动中国怎么样
丈夫家暴,想写封举报信
我家暹罗猫我放它出去玩结果没回来以前经常放
瑞丰银行工作怎么样
速度与激情里那句话 不飙宁死英语怎么说
剪吧造型工作室(红山路)怎么去啊,有知道地址
推荐资讯
求 聊聊里一段打人骂人的录音,有什么 你给我
四川理科生高考想考江苏的大学,是不是很难?
风水学门上面放个煤气管道好不好
金坛市荣华制粉厂这个地址在什么地方,我要处
一人比你小的男生摸了你的头
水溶彩铅什么牌子好
浙江东方建设集团有限公司招聘流程是怎样的啊
马上要去参加中国民航大学空乘专业的考试了,
小米蓝牙耳机支持PBAP不?可以来电报姓名吗
从揭阳总站到海门莲花峰打车要多少钱
z140到北京哪个站
红小豆枸杞胡萝卜芹菜山楂粥有啥药效?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?