当前位置: 首页 > 面试题库 >

如何在JavaScript中将AJAX检索的值返回到当前函数的父函数?

终祯
2023-03-14
问题内容

我有以下JavaScript(和jQuery)代码:

function checkEmail(email) {
    if (email.length) {
        $.getJSON('ajax/validate', {email: email}, function(data){
            if (data == false) {
                // stuff
            }
            return data;
        })
    }
}

我希望匿名函数return data成为父函数checkEmail()。我试图做这样的事情:

function checkEmail(email) {
    if (email.length) {
        var ret = null;
        $.getJSON('ajax/validate', {email: email}, function(data){
            if (data == false) {
                // stuff
            }
            ret = data;
        })
        return ret;
    }
}

但是,由于$.getJSON()调用是异步的,因此当然不会起作用,因此它将return ret在GET请求完成之前执行。

有什么想法吗?

谢谢!


问题答案:

通常,处理此类问题的最佳方法是使用某种形式的回调函数。实际上,这实际上是唯一可行的解​​决方案-
唯一的其他选择是对浏览器自己的扩展进行编码,这要花很多钱(除非您真的很想撞墙)。这些板上实际上存在很多并行的问题:您可以尝试搜索一些,很多都是很好的。

修改代码:

function checkEmail(email) {
    /*
        original parts of the function here!
    */

    if (email.length) {
        $.getJSON('ajax/validate', {email: email}, function(data){
            if (data == false) {
                // stuff
            }
            checkEmailResponse( data );
        })
    }
}

function checkEmailResponse( data )
{
    // do something with the data.
}


 类似资料:
  • 我有一个函数,它调用一些服务并返回响应。如果响应为FALSE,它将等待1秒再次询问服务(然后可能返回TRUE)。 如何调用我的函数“checkService()”一次,并获得真正的值?(第一次或第二次尝试,由函数决定)我在函数内设置了RET值,但函数总是返回第一次RET,因为setTimeout是异步的。 换句话说,我需要一些“睡眠”技巧,或者任何解决方案(也可能是jQuery)。

  • 问题内容: 所以我有一个来自Parse的PFFile对象,并且我试图创建一个函数来检索该PFFile的UIImage表示并将其返回。就像是: 但是,这里的问题很明显。我每次都会得到nil,因为getDataInBackroundWithBlock函数是异步的。有什么方法可以等到检索到UIImage之后再返回image变量?我不知道在这种情况下使用同步getData()是否有效。 问题答案: 是的,

  • 问题内容: 这个问题已经在这里有了答案 : 如何从异步调用返回响应? (39个答案) 7年前关闭。 我想创建一个JavaScript函数,该函数返回jQuery AJAX调用的值。我想要这样的东西。 我知道我可以通过将async设置为false来做到这一点,但我宁愿不这样做。 问题答案: 使用jQuery 1.5,您可以使用全新的功能,正是为此目的而设计的。 资源

  • 我正在尝试从函数返回布尔值。 错误:布尔文字不符合预期的类型单位。 我知道unit是kotlin中的默认返回类型。我将如何将其更改为布尔值。

  • 问题内容: 我的Go函数应该返回一个值,但是在调用库函数时可能会出现紧急情况。我可以在延迟调用中捕获它,但是在这种情况下如何返回一个值? 问题答案: 您可以使用命名结果参数。命名您的返回值,并在检测到紧急情况时在延迟函数中更改返回“变量”的值。更改后的新值将被返回。 例: 输出(在Go Playground上尝试): Spec:Defer语句中 提到了这一点: 例如,如果延迟函数是函数文字,并且周

  • 问题内容: 我在将数据返回到想要返回的函数时遇到问题。代码如下: 我通过在另一个函数内调用processRequest函数来调用这段代码。发送请求并获取响应就可以了。但是,我需要将响应中的值“ id”返回给processRequest函数,因此它又可以将该值返回给其调用方。据我所知,processResponse中的返回值返回到$ .ajax,但是我需要它进一步返回到processRequest。