解决 JavaScript XHR 过早 return 导致返回 null 的问题

在 XHR 中,由于异步特性,导致变量在被赋值前被 return,此时将导致返回值为空。

解决方案

将发送 XHR 的部分放在函数 xhrReq() 中,并使用 Promise。在 onload部分使用reslove()将结果返回,在onerror部分使用reject()将失败结果返回。

function xhrReq() {
    return new Promise(function(reslove, reject) {
            //...
            let req = new XMLHttpRequest();
            req.onload = function () {
                //...
                reslove(return_text)
            }
            req.onerror = function(){
                reject(req.statusText);
            }
            //req.send(...);
        }
    )
}   

接着在需要调用的函数前使用async,并在调用处加上await

async function main(){
    //...
    let ret = await xhrReq();
    //..
}

添加新评论