Javascript:I have a dynamically filled array named resultsAuthor, when I log this object, I get this.(记录它,因为我需要长度来遍历对象而这不起作用)1 但是当我尝试记录resultsAuthor.length时,我得到0。 谁知道我做错了什么?
从那里我在我的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
谢谢!
答案 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);
});