Javascript函数类对象返回undefined
问题描述:
嗨,我有函数,它返回一个JavaScript类,但在运行时返回值是未定义的。当我将返回值设置为某个全局变量时,它在Chrome开发者控制台上给了我正确的结果。为什么会发生?Javascript函数类对象返回undefined
var globalData;
$(document).ready(function(){
var request = postRequest("contact", dt, elem);
globalData = request;
console.log(request.status); //this gaves me undefined
});
function returnObj(status, message, projects) {
this.status = status;
this.message = message;
this.projects = projects;
}
function postRequest(method, vars, elem) {
var result = new returnObj();
$.post('api.aspx',
{
method: "test"
},
function (data, status) {
var resultObject = $.parseJSON(data);
result.status = resultObject.status;
result.message = resultObject.message;
result.projects = resultObject.projects;
});
return result;
}
答
你post
AJAX请求接受作为第三参数callback
函数,它是asyncronous。
return result;
陈述将在callback
完成之前调用,这就是您收到undefined
的原因。
我建议您创建一个callback
函数。
function postRequest(method, vars, elem,callback) {
^^^^^^^^
var result = new returnObj();
$.post('api.aspx',
{
method: "test"
},
function (data, status) {
var resultObject = $.parseJSON(data);
result.status = resultObject.status;
result.message = resultObject.message;
result.projects = resultObject.projects;
callback(result);
});
}
如何调用函数:
postRequest(method, vars, elem, function(result) {
console.log(result);
});
http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-电话 – naortor
帖子是异步的,当函数返回“result”后肯定还没有完成! – Baro