是文件系统在 JavaScript 中的不同线程上运行
is file system is running on diffrent thread in javascript
我使用了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 插件的文档,您将了解这些插件是如何构建的。科尔多瓦插件文档
相关文章:
- 在javaservlet doPost方法中启动线程时,无法返回异常消息
- javascript中的多线程
- Javascript支持多线程吗
- 如何在nodejs中创建线程池
- 在节点.js的多个线程中运行任务
- Do JS Reference Errors停止运行时线程执行
- Cordova应用程序在安卓系统上运行,但线程似乎在ios上冻结了;“由于页面加载而重置插件”;
- 是文件系统在 JavaScript 中的不同线程上运行
- 我可以在单独的线程中运行 UIWebView 吗?
- JavaScript 函数可以检查它是否在 Web Worker 线程上运行吗?
- 如何将包含在 eval 方法中的两个文件作为线程运行
- AJAX 以多线程方式运行
- 如何使 UI 线程连续运行
- 在所有主流浏览器中,GIF动画和javascript在同一个线程上运行,这是真的吗?
- Google V8引擎可以在不同的上下文、不同的线程中同时运行不同的javascript吗?
- 中断运行javascript脚本的java线程
- spin.js在IE和FF上长时间运行线程时停止旋转
- Canvas显然运行多个线程
- 浏览器脚本是否强制要求在单个线程上运行
- 是否可以在单独的线程中运行 HTML 5 视频