Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让这个JavaScript类成员返回一个值?_Javascript_Jquery_Callback - Fatal编程技术网

如何让这个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()方法获取数据。需要返回数据,但似乎获取数据的唯一方法是通

我有一个JavaScript类,它有一个方法:

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
处理。更新以允许您预处理数据。