【问题标题】:Chrome app, Javascript, fileSystem -> createWriter -> onwriteend is called twice instead of one time (?)Chrome 应用程序、Javascript、fileSystem -> createWriter -> onwriteend 被调用两次而不是一次(?)
【发布时间】:2016-09-26 13:20:47
【问题描述】:

我有(改编的)以下代码:

    function saveFiles(saving_dir, content, name) {
      var i = 1;
      return new Promise(function(resolve) {
        chrome.fileSystem.getWritableEntry(saving_dir, function(entry) {
          entry.getFile(name, {
            create: true
          }, function(entry) {
            entry.createWriter(function(writer) {
              writer.onwrite = function() {
                writer.onwrite = null;
                writer.truncate(writer.position);
              };
              writer.onwriteend = function(e) {
                console.log(i)
                i++;
                console.log('written! "' + name + '"')
                // resolve();
              };
              writer.onerror = function(e) {
                console.log('failed! "' + name + '"');
                console.log(e);
              };

              var blob = new Blob([JSON.stringify(content)], {
                type: 'text/javascript'
              });
              writer.write(blob);
            }, function(e) {
              trace.innerText = 'error is ' + e;
              console.log(e);
            });
          });
        });
      });
    }

    saveFiles('/', 'hola', 'delete.txt');

而且我不知道为什么这会执行两次onwriteend 事件,console.log(i) 给出12

如果我在两者之间添加日志,则除了事件之外的所有内容都会调用一次。有什么建议吗?

【问题讨论】:

标签: javascript filesystems dom-events google-chrome-app


【解决方案1】:

您触发write,然后在onwrite 监听器中触发truncate

根据last public draft of the spec,您对truncate 的调用也会触发writeend 事件。

【讨论】:

    猜你喜欢
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多