获取resolveLocalFileSystemURL以返回true或false(Cordova)

时间:2016-02-01 13:32:46

标签: html5 file api cordova

我试图让window.resolveLocalFileSystemURL返回true或false,以便我可以在另一个函数中同步使用它。

例如,我想这样做。

function fileExists(file) {
    window.resolveLocalFileSystemURL(file,
    function(entry) {
        console.log('it exists');
        return true;
    }, 
    function(err) {
        console.log('no sign of it');
        return false;
    });
}

if (fileExists(file)) {
    // it exists
} else {
    // doesn't exist
}

我在使用Cordova开发的iOS应用程序中使用它。我没有把函数发送到console.log,但我无法获得返回值。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

万一有人在寻找其他选择。我想出了以下解决方案:

function fileExists(file) {
  return new Promise((resolve, reject) => {
    window.resolveLocalFileSystemURL(file,
      (entry) => {
        resolve(entry)
      },
      (err) => {
        reject(err)
      })
  })
}


await fileExists(file)
  .then((entry) => {
    // file exists
    return true
  })
  .catch((err) => {
    // file does not exist
    return false
  })

答案 1 :(得分:0)

我使用回调解决了这个问题。我将函数剥离回准系统,并通过添加回调来调用它们。

function fileExists(file,callback) {
  window.resolveLocalFileSystemURL(file,
  function(entry) {
    callback(true);
  }, 
  function(err) {
    callback(false);
  });
}