我在使用JavaScript时遇到了一些麻烦。
我正在尝试使用NW.JS制作桌面应用程序。我有一个.xml文件,可以将其拖放到我的应用程序中,然后运行一个函数来读取XML,并在.csv中保存一个新文件
它工作正常,但现在我可以在功能期间更新进度栏...
我尝试了setInterval
和setTimeOut()
,但是总是得到相同的结果:在该函数完成之前,不会追加任何内容。
这是我的代码
//Same as $(document).ready();
function ready(fn) {
if (document.readyState != 'loading'){
fn();
} else {
document.addEventListener('DOMContentLoaded', fn);
}
}
//When the page has loaded, run this code
ready(function(){
// prevent default behavior from changing page on dropped file
window.ondragover = function(e) { e.preventDefault(); return false };
// NOTE: ondrop events WILL NOT WORK if you do not "preventDefault" in the ondragover event!!
window.ondrop = function(e) { e.preventDefault(); return false };
var holder = document.getElementById('holder');
holder.ondragover = function () { this.className = 'hover'; return false; };
holder.ondragleave = function () { this.className = ''; return false; };
holder.ondrop = function (e) {
e.preventDefault();
var file = e.dataTransfer.files[0],
reader = new FileReader();
reader.onload = function (event) {
########I'm doing stuff here to convert file and i want to update the progressbar##########
};
reader.readAsText(file);
//reader.readAsDataURL(file);
return false;
};
});
谢谢你的帮助
最好的祝福,
最佳答案
在NWJS和Electron中尝试了相同的代码后,我发现问题是“主要” Chromium进程中任何长时间运行的进程都阻止了渲染。解决方案是生成一个通过Node的IPC进行通信的子进程。 this answer中的更多详细信息。