如何让这个JavaScript类成员返回一个值?
我有一个JavaScript类,它有一个方法:如何让这个JavaScript类成员返回一个值?,javascript,jquery,callback,Javascript,Jquery,Callback,我有一个JavaScript类,它有一个方法: function someClass() { this.someMethod = someClass_someMethod; } function someClass_someMethod() { // make an AJAX request } 问题是someClass\u someMethod()需要返回AJAX请求的值 我正在使用jQuery的$.getJSON()方法获取数据。需要返回数据,但似乎获取数据的唯一方法是通
function someClass() {
this.someMethod = someClass_someMethod;
}
function someClass_someMethod() {
// make an AJAX request
}
问题是someClass\u someMethod()
需要返回AJAX请求的值
我正在使用jQuery的$.getJSON()
方法获取数据。需要返回数据,但似乎获取数据的唯一方法是通过回调
如何做到这一点?您可以使用非异步请求,但这会在请求执行时阻塞浏览器
回调确实是唯一的方法,因为您需要等待任意数量的时间,请求才能成功或出错。不要担心从头编写AJAX时可能出现的所有跨浏览器问题,我建议使用行业标准框架(如jQuery)来处理您当前的请求。正如Delan Azabani指出的,它是异步的,这是不熟悉异步通信的人的共同要求
function someClass_someMethod(callback) {
$.getJSON(..., function(data) {
// process the data here...
callback(data);
);
}
您现在可以执行以下操作:
var someClass = new someClass();
someClass.someMethod(function(data) {
... handle your preprocessed data here ...
});
这个答案中没有新概念,只提供了代码示例。在这个代码中,someClass\u someMethod将发出一个非异步请求并返回值。因此,在请求结束之前不会执行任何操作,从而允许您返回值
function someClass() {
this.someMethod = someClass_someMethod;
}
function someClass_someMethod() {
var ret = {};
$.ajax({
url: url,
dataType: 'json',
success: function(data) {
ret = data;
},
async: false
});
return ret;
}
查看如何向调用
someMethod
的客户端返回值,然后?他们是否必须提供回调?但是数据需要在返回到客户端之前由someClass
处理。更新以允许您预处理数据。