我有(改编)以下代码
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)
提供1
和2
。
如果我在其间添加日志,除事件外,一切都会被调用。有提示吗?
答案 0 :(得分:1)
您在write
听众中触发了truncate
,然后是onwrite
。
根据last public draft of the spec,您对truncate
的来电也会触发writeend
事件。