用HTML5 FileWriter覆盖文件

htu*_*ipe 14 javascript html5 chromium fileapi

我正在使用HTML5 FileWriter API来保存我的webapp状态.我有一些JS定期调用FileWriter.write它(因此,随着时间的推移,该write方法被调用几次).默认情况下,FileWriter API使用'append'方法来编写不符合我需要的文件,因为我不想覆盖文件内容.

我第一次尝试这个:

this._writer.seek(0);
this._writer.write(content);
Run Code Online (Sandbox Code Playgroud)

当您编写的文本短于文件内容时,这不起作用.然后我尝试了这个:

this._writer.truncate(0);
this._writer.write(content);
Run Code Online (Sandbox Code Playgroud)

这段代码应该清除文件,然后编写我的新内容,但是在write调用方法时出现以下错误:

Uncaught InvalidStateError: An operation that depends on state cached in an interface object was made but the state had changed since it was read from disk.
Run Code Online (Sandbox Code Playgroud)

奇怪的是:当我调试代码(带断点)时,不会发生错误,好像FileWriter.truncate是一个异步方法......

我被困在这里,有什么想法吗?

我使用的是Chrome 30.0.1599.69

Iva*_*tin 21

这是一个正确的代码,不会浪费500毫秒等待

fileWriter.onwriteend = function() {
    if (fileWriter.length === 0) {
        //fileWriter has been reset, write file
        fileWriter.write(blob);
    } else {
        //file has been overwritten with blob
        //use callback or resolve promise
    }
};
fileWriter.truncate(0);
Run Code Online (Sandbox Code Playgroud)