繁体   English   中英

如何将回调函数中的值返回给调用者?

[英]How can i return a value from a callback function to the caller?

我怎样才能使这个小功能“imageExists”返回ajax请求成功与否?

function imageExists(path){
    $.ajax({
        url: path,
        type: 'HEAD',
        error:
            function(){
                return false;
            },
        success:
            function(){
                return true;
            }
    }); 
}

您将在success函数或error函数中返回AJAX调用的结果,因此应从该点调用接下来应调用的任何函数。

因为AJAX请求是异步的(我建议不要让它成为阻塞同步调用),所以你发出请求但不知道它什么时候会返回; 当它返回时它会打电话给你,所以你只需要提供一些东西来打电话。

function imageExists(path){
    $.ajax({
        url: path,
        type: 'HEAD',
        error:
            function(){
                iveReturned(false);
            },
        success:
            function(){
                iveReturned(true);
            }
    });   
}

function iveReturned(result) {
    // code here to do something following AJAX response.
}

我相信你必须使用同步模式并使用一个单独的变量来存储返回值。

function imageExists(path){
    var isSuccess;
    $.ajax({
        url: path,
        type: 'HEAD',
        async: false,
        error:
            function(){
                isSuccess = false;
                return false;
            },
        success:
            function(){
                isSuccess = true;
                return true;
            }
    });
    return isSuccess;
}

创建一个var以在全局级别保存响应,然后将async设置为false。 然后,您需要在成功或错误函数中设置该var。

http://api.jquery.com/jQuery.ajax/

function imageExists(path){
myVar = null;
$.ajax({
    url: path,
    type: 'HEAD',
    error:
        function(){
            myVar = false;
        },
    success:
        function(){
            myVar = true;
        },
    async: false
}); 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM