我建议用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
})
主要作用是用于筛选所有的XHR类型的请求,达到只看XHR类型请求的目的XHR这个标签出现在Chrome浏览器的开发者工具Network选项卡中
XHR类型即通过XMLHttpRequest方法发送的请求
filter是一个过滤器,它可以筛选包含输入关键词的请求,也可以筛选特性类型的请求,如domain、status-code等
这个报错的意思是连接超时啦。
var xhr = new XMLHttpRequest()xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
// Success
} else {
// Error(Timeout)
console.log(xhr)
console.log(xhr.responseText)
}
}
}
xhr.open...
xhr.send...