阵列

时间:2017-07-31 17:32:16

标签: javascript arrays

Javascript:I have a dynamically filled array named resultsAuthor, when I log this object, I get this.(记录它,因为我需要长度来遍历对象而这不起作用)1 但是当我尝试记录resultsAuthor.length时,我得到0。 谁知道我做错了什么?

This is in my utils.js

从那里我在我的main.js中称它为:

var searchCriteria = document.querySelector('[title="tbxZoeken"]').value;
var searchAuthor = new Utils.GetBookinfoByAuthor(searchCriteria);
var resultsAuthor = searchAuthor.loadData();

console.log(resultsAuthor); // returns the object
console.log(resultsAuthor.length); // returns 0

谢谢!

1 个答案:

答案 0 :(得分:1)

打印resultsAuthor.length时,您的ajax调用可能尚未完成加载,因此返回0。 如果您打印resultAuthor,这仍然是对原始变量的引用,因此它可以正确打印。

要解决此问题,您可以使用回调函数或承诺。通过回调,您可以执行以下操作:

在你的utils.js

GetBookinfoByAuthor: function (auteur) {
    //...
    this.loadData = function(callback) {

       // Rest of your code...

       // Request returned sucessfully
       if (xhr.status === 200) {

          //Rest of your code....               

          for (var i = 0; i  < data.length; i++) {
            // add all books to array
          }

       // All books a loaded
       callback(books)
    }
   }
}

在你的main.js

var searchCriteria = document.querySelector('[title="tbxZoeken"]').value;
var searchAuthor = new Utils.GetBookinfoByAuthor(searchCriteria);
searchAuthor.loadData(function() {
  console.log(resultsAuthor);
  console.log(resultsAuthor.length);
});