Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
异步方法的jquery延迟_Jquery_Jquery Deferred - Fatal编程技术网

异步方法的jquery延迟

异步方法的jquery延迟,jquery,jquery-deferred,Jquery,Jquery Deferred,我有一个函数,在内部进行ajax调用,并具有成功和失败回调方法 function dothis() { object.getMyData(x,y,successCallback,failureCallback); } 由于getMyData是异步函数,因此该函数立即返回。现在我想让这个函数等待执行successCallback或failureCallback。如何使用延迟调用?看起来您不需要异步调用 您是否尝试进行同步调用,然后执行成功/失败功能?请澄清 谢谢 @狮子座 同步呼叫示例>

我有一个函数,在内部进行ajax调用,并具有成功和失败回调方法

function dothis() {
    object.getMyData(x,y,successCallback,failureCallback);
}

由于getMyData是异步函数,因此该函数立即返回。现在我想让这个函数等待执行successCallback或failureCallback。如何使用延迟调用?

看起来您不需要异步调用

您是否尝试进行同步调用,然后执行成功/失败功能?请澄清

谢谢

@狮子座

同步呼叫示例>

$.ajax({
        type: "GET",
        url: remote_url,
        async: false,
        success : function(data) {
            remote = data;
        }
    });

我更希望您使用$.when和$.then组合的jquery deferred。

您可以访问


您也可以在中找到相对答案。

ajax
已经返回了一个延迟的,所以您可以直接使用它。您能否更改
getMyData
以返回
ajax
返回的延迟数据

function getMyData() {
    return ajax({
        // ajax params
    });
}

function dothis() {
    // return deferred which comes from ajax
    return object.getMyData(x,y,successCallback,failureCallback); 
}

dothis().done(function(){
    // do something on success
}).fail(function(){
    // do something on failure
});
如果无法更改
getMyData
以返回延迟的数据,则可以执行以下操作:

function dothis() {
    var dfd = $.Deferred();
    object.getMyData(x,y,function(){
        dfd.resolve(); // success
    },function(){
        dfd.reject();  // fail
    });
    return dfd.promise(); 
}

dothis().done(function(){
    // do something on success
}).fail(function(){
    // do something on failure
});