我在使用JavaScript时遇到了一些麻烦。
我正在尝试使用NW.JS制作桌面应用程序。我有一个.xml文件,可以将其拖放到我的应用程序中,然后运行一个函数来读取XML,并在.csv中保存一个新文件
它工作正常,但现在我可以在功能期间更新进度栏...

我尝试了setIntervalsetTimeOut(),但是总是得到相同的结果:在该函数完成之前,不会追加任何内容。

这是我的代码

  //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中的更多详细信息。

10-04 15:46