JS问题xhr.onload = function()
Me_Event_date.loadMapData=function(mapId){if(mapId>0){varfilename='Map%1.json'.format...
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;
这样就太迟了 展开
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;
这样就太迟了 展开
展开全部
我建议用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;
})
2017-08-28
展开全部
你是使用异步了吧,这个默认不写好像就是异步吧
xhr.open('GET', url);
要明确吧
xhr.open('GET', url, false);
xhr.open('GET', url);
要明确吧
xhr.open('GET', url, false);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询