转换为另一个对象返回undefined

时间:2014-02-02 18:50:05

标签: javascript google-chrome google-apps

我正在尝试使用chrome应用程序并尝试从用户选择的目录中包含的文件中读取。到目前为止,它运行良好,用户选择一个文件,然后将单个文件条目对象打印到我的控制台:

代码:

         for (var i = 0; i < entries.length; ++i) {
            console.log("entry is " + entries[i]);
            a = entries[i].file(callback);    
          }

控制台:

       entry is [object FileEntry] window.js:18
       entry is [object FileEntry]
       ......

因此,您可以从控制台entries[i]看到的是FileEntry对象。 要从FileEntry读取i,首先必须将其转换为File对象。 在FileEntry的文档中:https://developer.mozilla.org/en-US/docs/Web/API/FileEntry#File我读到有一个函数void file( FileCallback successCallback, optional ErrorCallback errorCallback );返回一个文件对象。

如何在上面的代码表格中看到我试图通过以下方式实现:

    a = entries[i].file(callback); 
......

var callback = function(){
    console.log("it works");
    console.log(a); 
} 

我的问题console.log(a)没有返回object File,而是未定义:

控制台:

entry is [object FileEntry]   window.js:18
entry is [object FileEntry]   window.js:18
it works                      window.js:29
undefined                     window.js:30
it works                      window.js:29
undefined 

我错了什么?如何测试它是否真的返回文件对象?谢谢!

完整代码

var callback = function(){
    console.log("it works");
    console.log(a); 
} 


chooseDirButton.addEventListener('click', function(e) {
  chrome.fileSystem.chooseEntry({type: 'openDirectory'}, function(theEntry) {

    chrome.fileSystem.getDisplayPath(theEntry, function(path) {

    var reader = theEntry.createReader();

        reader.readEntries(function(entries) {
          for (var i = 0; i < entries.length; ++i) {
            console.log("entry is " + entries[i]);
            a = entries[i].file(callback);    
          }
        });

    });
  });
});

2 个答案:

答案 0 :(得分:0)

更改

  

var callback = function(){

要:

  

var callback = function(a){

答案 1 :(得分:0)

我读了......&#34;有一个功能

**void** file(
  FileCallback successCallback, optional ErrorCallback errorCallback
);

返回文件对象。&#34;

如你所见,它不会返回它,但作为参数传递给回调。他们的言语不好