Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 调用Array.length时数组长度不正确_Javascript - Fatal编程技术网

Javascript 调用Array.length时数组长度不正确

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

我是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.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。重复的。太好了,我刚刚尝试过,效果非常好,谢谢您的帮助!太好了,我刚试过,效果很好,谢谢你的帮助!