如何从Ajax调用返回正确的值

时间:2017-04-27 17:42:20

标签: javascript ajax rest api

我想在我的函数中调用一个返回数组的API,我想知道数组的长度。下面的代码是一个粗略的实现。

function count() {
    var count;
    $.ajax({
        url: "...",
        success: function (array) {
            count = array.length;
        }
    });
    if (count >= 0) {
        return count;
    } else {
        alert(count);
    }
}

这不起作用,因为count没有返回数组的长度和alert(count)返回undefined,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在异步响应返回之前,您将无法访问count的值。您的函数是同步的,在尝试读取之前不会等待计数结果。最简单的解决方案是将您的逻辑范围放在成功回调中:

function count() { var count; $.ajax({ url: "...", success: function (array) { count = array.length; if (count >= 0) { return count; } else { alert(count); } } }); }

<强>更新

为简单起见,我只是复制了返回块。我没有优化它。我的目的是表明使用success callback是获得响应的最快方式。考虑一下JSFiddle