在以下代码中,Firefox会向控制台添加AbortError
,而Chrome则不会。
var bugDB = 'test1';
var delReq = indexedDB.deleteDatabase(bugDB);
delReq.onsuccess = function () {
var req = indexedDB.open(bugDB);
req.onupgradeneeded = function (e) {
console.log('upgrade');
req.result.close();
console.log('finish closing');
};
};
尽管此错误并未阻止执行"完成关闭"但它确实会导致Firefox的Mocha / Chai测试出现问题(尽管如果在{0}内调用req.results.close()
则不会出现此类错误这是req.onsuccess
处理程序。这是Firefox中的错误吗?如果AbortError
正在某处传播(按设计?),如何成功捕获它(e.target.result.onabort
不起作用?)< / p>
答案 0 :(得分:2)
此行为符合规范:
https://w3c.github.io/IndexedDB/#opening
&#34;打开数据库的步骤&#34; 8.2:如果连接在升级之后但在成功之前关闭 - 这会在调用close()
时发生,因为在升级事务完成之前实际上并未发生关闭 - 然后打开请求失败并且AbortError
就像你一样#39;重新看到。
Chrome和Firefox中的行为相同; Chrome默认情况下不会记录错误。如果你添加:
req.onerror = function(e) {
console.log(req.error.name, req.error.message);
};
...你也会在Chrome中看到它。