JavaScript推送返回一个空数组
我知道这件事已经受到质疑,但实际上,我没有发现任何有用或可以理解的东西 我有以下代码:JavaScript推送返回一个空数组,javascript,arrays,array-push,Javascript,Arrays,Array Push,我知道这件事已经受到质疑,但实际上,我没有发现任何有用或可以理解的东西 我有以下代码: var pdfListPath = []; function listDir(path) { window.resolveLocalFileSystemURL(path, function(fileSystem) { var reader = fileSystem.createReader(); reader.readEntries( function(e
var pdfListPath = [];
function listDir(path) {
window.resolveLocalFileSystemURL(path,
function(fileSystem) {
var reader = fileSystem.createReader();
reader.readEntries(
function(entries) {
console.log(entries);
for (var i = 0; i == entries.length; i++) {
pdfListPath.push(entries[i]);
};
},
function(err) {
console.log(err)
}
);
},
function(err) {
console.log(err);
}
);
};
var pdfList = listDir(cordova.file.applicationDirectory + "www/pdf/");
console.log(pdfList);
console.log(pdfListPath);
我所期望的是pdfListPath
中填充了一些东西,但我在控制台中得到的是一个“未定义的”
而条目
是一个填充数组,那么这有什么错呢
提前谢谢。您的for循环错误,需要更改
for (var i = 0; i == entries.length; i++) {
pdfListPath.push(entries[i]);
};
到
for(变量i=0;i
(不是100%确定,可能是因为您的for循环错误,您需要更改。)
for (var i = 0; i == entries.length; i++) {
pdfListPath.push(entries[i]);
};
到
for(变量i=0;i
(不是100%确定,甚至可能是
您的代码是异步的,您需要移动console.log(pdfListPath);
在处理程序函数中的for循环之后;DR,console.log(pdfList)
在异步调用内部函数之前发生。真正的值仅在那些内部函数中可用。)(或使用承诺和/或async
functions)function listDir(path,successHandler,errorHandler){window.resolveLocalFileSystemURL(path,fileSystem=>fileSystem.createReader().readEntries(successHandler,errorHandler,errorHandler)}
或者更好,您可以签出Promises;避免代码中的回调地狱。如果您的代码是异步的,您需要在处理程序函数tl;DR,console.log(pdfListPath)中的for循环之后移动console.log;
发生在异步调用内部函数之前。实际值仅在这些内部函数中可用(或使用承诺和/或async
函数)function listDir(path,successHandler,errorHandler){window.resolveLocalFileSystemURL(path,fileSystem=>fileSystem.createReader().readEntries(successHandler,errorHandler),errorHandler)}
或者更好,您可以检查承诺;避免代码中的回调地狱。谢谢,但问题不在于此谢谢,但问题不在于此