Javascript 调用Array.length时数组长度不正确
我是js新手,我正在尝试使用jquery请求从api收集电影标题,并将数据保存在一个名为arr的数组中,如下所示:Javascript 调用Array.length时数组长度不正确,javascript,Javascript,我是js新手,我正在尝试使用jquery请求从api收集电影标题,并将数据保存在一个名为arr的数组中,如下所示: var arr = [] var query = inp.value; var url = `https://api.themoviedb.org/3/search/movie?api_key=${key}&query=${query}` $.getJSON(url, function(data) { var data = data
var arr = []
var query = inp.value;
var url = `https://api.themoviedb.org/3/search/movie?api_key=${key}&query=${query}`
$.getJSON(url, function(data) {
var data = data.results;
for (var i = 0; i < 10; i++) {
var title = data[i].original_title;
arr.push(title)
}
});
console.log(arr);
console.log(arr.length);
var arr=[]
var query=inp.value;
变量url=`https://api.themoviedb.org/3/search/movie?api_key=${key}&query=${query}`
$.getJSON(url、函数(数据){
var数据=数据。结果;
对于(变量i=0;i<10;i++){
变量标题=数据[i]。原始标题;
arr.push(标题)
}
});
控制台日志(arr);
控制台日志(arr.length);
问题是,当我尝试打印新的arr长度时,它给了我一个0的长度,为什么会发生这种情况,我如何修复它?
问题是,当您调用
$.getJSON
时,它不会立即完成。下面的代码(在$.getJSON
回调之外)在调用完成之前执行。这是一个正在发生的事情的例子
const arr=[];
$.getJSON('https://jsonplaceholder.typicode.com/todos/1',(json)=>{
arr.push(json);
console.log(“第一个日志”,arr.length);
});
console.log(“第二个日志”,arr.length)代码>
问题在于,当您调用$.getJSON
时,它不会立即完成。下面的代码(在$.getJSON
回调之外)在调用完成之前执行。这是一个正在发生的事情的例子
const arr=[];
$.getJSON('https://jsonplaceholder.typicode.com/todos/1',(json)=>{
arr.push(json);
console.log(“第一个日志”,arr.length);
});
console.log(“第二个日志”,arr.length)代码>
解析数据时,需要将控制台放在回调中。这是一个典型的异步问题。在解析回调之前,将执行两个console.log,因此在该点中,长度数组为0。的重复项。解析数据时,需要将控制台放在回调中。这是一个典型的异步问题。这两个console.log都是在回调解决之前执行的,因此在该点中,长度数组为0。重复的。太好了,我刚刚尝试过,效果非常好,谢谢您的帮助!太好了,我刚试过,效果很好,谢谢你的帮助!