我想在Javascript中从getMine
函数内部返回一个对象,但是当我尝试打印出该对象时,我得到了undefined
。您将如何在以下函数中返回obj
?
function getMine() {
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState === 4) { // request is done
if (httpRequest.status === 200) { // successfully
var obj = JSON.parse(httpRequest.responseText)
return obj;
}
}
};
httpRequest.open('GET', "/getTest");
httpRequest.send();
}
var rs = getMine();
console.log("2", rs);
答案 0 :(得分:0)
因为getMine正在进行ajax调用,所以它本质上是异步的。当您尝试在调用getMine()之后立即记录rs的值时,ajax调用尚未完成。将console.log调用添加到onreadystatechange回调中:
httpRequest.onreadystatechange = function () {
if (httpRequest.readyState === 4) {
if (httpRequest.status === 200) {
var obj = JSON.parse(httpRequest.responseText);
console.log('responseText: ', responseText);
return obj;
}
}
};
如果您需要能够使用返回值执行某些操作,那么您可能希望使用promises来处理ajax调用的异步解析。