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)}
或者更好,您可以检查承诺;避免代码中的回调地狱。谢谢,但问题不在于此谢谢,但问题不在于此