Javascript 是否使用chrome文件系统API保留多个文件项?

Javascript 是否使用chrome文件系统API保留多个文件项?,javascript,arrays,google-chrome-app,Javascript,Arrays,Google Chrome App,当用户使用chrome文件系统API打开应用程序时,如何保留多个fileEntry对象以供重用?我曾尝试使用数组来存储文件条目,在我重新启动应用程序并且无法使用它们之前,它工作正常。控制台没有返回fileEntry对象,而是返回一个object对象(这是在我使用了chrome.storage.local.set和chrome.storage.local.get设置并检索用户重新启动应用程序后的条目之后。)您无法在会话之间保留实际的文件条目。你需要使用它返回一个可以存储的id,然后在应用程序重新打

当用户使用chrome文件系统API打开应用程序时,如何保留多个fileEntry对象以供重用?我曾尝试使用数组来存储文件条目,在我重新启动应用程序并且无法使用它们之前,它工作正常。控制台没有返回fileEntry对象,而是返回一个object对象(这是在我使用了
chrome.storage.local.set
chrome.storage.local.get
设置并检索用户重新启动应用程序后的条目之后。)

您无法在会话之间保留实际的文件条目。你需要使用它返回一个可以存储的id,然后在应用程序重新打开时使用它来重新访问条目。

经过多次往返之后,我找到了如何保留多个文件条目的方法。 这是给需要它的人的代码

  //save
  //'fileEntries' is an array that I made earlier where multiple entries were stored
  var keep = [];
  fileEntries.forEach(function(entry, index) {
    //if it's empty or null, return nothing
    //otherwise add the id to our empty array 'keep'
    if (entry == null) {
      //do nothing
    } else {
      keep[index] = chrome.fileSystem.retainEntry(entry);
    }
  });
  chrome.storage.local.set({
    retained: keep
  });
  //load
  chrome.storage.local.get('retained', function(data) {
  var retained = data.retained;
  retained = retained.filter(function(d) {
    return d
  });
  for (var i = 0; i < retained.length; i++) {
    var tab = retained[i];
    chrome.fileSystem.restoreEntry(tab, function(entry) {
      fileEntries.push(entry);
    });
  }
});
//保存
//“fileEntries”是我之前创建的一个数组,其中存储了多个条目
var保持=[];
forEach(函数(条目、索引){
//如果为空或null,则不返回任何内容
//否则,将id添加到空数组“keep”
if(条目==null){
//无所事事
}否则{
keep[index]=chrome.fileSystem.retaintery(条目);
}
});
chrome.storage.local.set({
保留:保留
});
//装载
chrome.storage.local.get('reserved',函数(数据){
保留的var=保留的数据;
保留=保留。过滤器(功能(d){
返回d
});
对于(变量i=0;i

还有。。。。就这样!加载功能完成后,
fileEntries
数组将包含所有fileEntry对象

我发现你的代码缺乏令人不安。@DanielHerr?我在寻求帮助。我发现你的代码缺乏令人不安。我只是需要一种使用chrome文件系统API保留和恢复多个文件项的方法。如果你不发布你拥有的内容,你能得到什么帮助?@DanielHerr你想让我发布不起作用的代码吗?我不是在要求修复我的代码,我是在问如何首先修复代码。到目前为止,我只尝试保存一个fileEntry数组,但在检索代码时,它只是说它不是fileEntry对象。