我想在我的函数中调用一个返回数组的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
,我该如何解决这个问题?
答案 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。