JS问题xhr.onload = function()

JavaScript023

JS问题xhr.onload = function(),第1张

我建议用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...