是文件系统在 JavaScript 中的不同线程上运行

is file system is running on diffrent thread in javascript

本文关键字:线程 运行 文件系统 JavaScript      更新时间:2023-09-26

我使用了javascript的文件系统,我注意到文件系统在执行读取后创建文件,但物理调用readFile是在调用writeFile之后。

readFile

var readFile = function () {
console.log("readfile" + new Date());
var that = this;
var result = "";
var successCallback = function (fs) {
console.log("Inside readFile()");
fs.root.getFile('rosters.txt', {create: false, exclusive: false},
  function (fileEntry) {
    fileEntry.file(function (file) {
      var reader = new FileReader();
      reader.onloadend = function(e) {
        console.log(this.result);
        result = this.result;
        that.showRosters(this.result);
      }; //onloadend() ENDS HERE
      reader.readAsText(file);
    },  //fileEntry success callback ENDS HERE
    function () { console.log("Error occurred during reading file");
    result = "Error";  } //error callback for fileEntry.file
    );  //fileEntry.file ENDS HERE  
  }, //fs.roor.getFile success callback ENDS HERE
  function () { console.log("File Not Found"); } ); //error callback fs.root
 }
 var errorCallback = function (e) {
 console.log(e.toString());
 }
 this.EMarshal.reqFs.call(window,this.EMarshal.persistent, 5*1024*1024 /*5MB*/,       successCallback, errorCallback);
return result
}

writeFile

var writefile = function (rosters) {
console.log("writeFile" + new Date());
var that = this;
console.log("Rosters" + rosters);
var successCallback = function (fs) {
console.log('Opened file system: ' + fs.name);
fs.root.getFile('rosters.txt', {create: true, exclusive: false},
  function(fileEntry) {
    console.log("File Created");
    fileEntry.createWriter( function(writer) { 
      that.gotFileWriter(writer,rosters);
      console.log("write");
      }
      ,function() { console.log("Failed"); 
        this.EMarshal.fail() }
    );
  },
  function (e) {
    console.log(e.toString()); 
  } );
}
var errorCallback = function (e) {
   console.log(e.toString);
};
console.log('Error: ' + msg);
}
this.EMarshal.reqFs.call(window,this.EMarshal.persistent, 5*1024*1024 /*5MB*/, successCallback, errorCallback);
}

对于gotFileWriter

 var gotFileWriter = function (writer,roster) {
 writer.seek(writer.length);
 writer.truncate(0);
 roster = "tripid:" + this.tripid + roster;
 writer.write(roster);
}

我试图得到时间,然后在写文件之前也读取文件正在运行。javascript 在这里运行 2 个线程吗?如果有人能解释为什么会发生这种情况,那将是有帮助的。

尝试检查js-module中的name属性。我在使用相同的插件时遇到了这个问题,它应该与插件名称相同。

如果它不起作用,请切换到另一个PhoneGap-SMS插件。这将很有用。

如果您阅读有关 cordova 插件的文档,您将了解这些插件是如何构建的。科尔多瓦插件文档