javascript - 如何从包装函数返回 javascript ajax 调用的结果?

标签 javascript jquery ajax asynchronous

标题可能有点奇怪,但我会尽力解释。

我执行 API 调用来验证一些数据。为此,我使用以下函数:

function validateAddress(address) {
    var validationURL = "/api/validateAddress/"+address;

    $.getJSON(validationURL, function(data, textStatus, jqXHR){
        if (textStatus === "success") {
            return data.isValid
        }
    }));
}

// And then in other parts of the code I want to do something like:
if (validateAddress(address)) {
    // do something awesome right here..
}

问题当然是它是一个异步调用,这会导致 validateAddress() 不返回任何内容,因为它在 API 调用返回任何结果之前结束。

那么我怎样才能真正让 validateAddress() 返回 api 调用的结果呢?欢迎所有提示!

最佳答案

你有几个选择:

  • 您可以将参数传递给 jQuery ajax 函数以使调用同步(但您不能使用 getJSON ,您需要直接使用 $.ajax 并传递它async: false)
  • 您可以将回调作为第二个参数传递到 validateAddress 函数中,请求完成时将调用该函数
  • 您可以从函数 validateAddress 返回 $.getJSON 调用的返回值,因为它是一个 promise ,您可以使用 .done() 将您的代码附加到它 (示例如下 http://api.jquery.com/jQuery.getJSON/#jqxhr-object )

关于javascript - 如何从包装函数返回 javascript ajax 调用的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25506467/

相关文章:

javascript - 路线规划需要双击

Javascript 排序以匹配 SQL Server 排序

javascript - 在mvc中使用jquery更新@RenderBody

php - 使用 Jquery Ajax 和 PHP 的 Google 隐形 Recaptcha

javascript - 无法从 Django 获取 POST 数据(从 React 发送)

javascript - 这个 JavaScript/jQuery 语法是如何工作的 : (function( window, undefined ) { })(window)?

javascript - AngularJS Http 与 Jquery Ajax

javascript - 使用 jQuery 动画 CSS3 渐变位置

c# - ajax 请求在 linkbutton asp 回发之前不会首先运行

php - 创建的动态元素未发布