Я использую HTML5 FileWriter API, чтобы сохранить состояние моего webapp. У меня бит JS, который периодически вызывает FileWriter.write, чтобы сделать это (поэтому со временем метод write вызывается несколько раз). По умолчанию API FileWriter использует подход "append" для записи файлов, которые не соответствуют моим потребностям, поскольку я не хочу перезаписывать содержимое файла.
Я впервые попробовал это:
this._writer.seek(0);
this._writer.write(content);
Это не работает, когда вы пишете текст короче, чем содержимое файла. Затем я попробовал это:
this._writer.truncate(0);
this._writer.write(content);
Этот код должен очистить файл, а затем записать мое новое содержимое, но я получаю следующую ошибку при вызове метода 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.
Нечетная вещь: когда я отлаживаю код (с точкой останова), ошибка не возникает, как если бы FileWriter.truncate был асинхронным методом...
Я застрял здесь, какие-нибудь идеи?
Я использую Chrome 30.0.1599.69