IndexedDB `upgradeneeded` 事件中的 `AbortError`
`AbortError` within IndexedDB `upgradeneeded` event
在下面的代码中,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');
};
};
尽管此错误不会阻止 "finish closing" 的执行,但它确实会导致 Mocha/Chai Firefox 测试出现问题(尽管如果 req.results.close()
在 req.onsuccess
处理程序。这是 Firefox 中的一个错误吗?如果 AbortError
正在某处传播(设计?),如何成功捕获它(e.target.result.onabort
不起作用)?
此行为符合规范:
https://w3c.github.io/IndexedDB/#opening
"steps for opening a database" 8.2:如果连接在升级之后但在成功之前关闭 - 这会在调用 close()
时发生,因为在升级事务完成之前关闭实际上不会发生 - 然后打开如您所见,请求失败 AbortError
。
Chrome 和 Firefox 中的行为相同; Chrome 默认情况下不记录错误。如果您添加:
req.onerror = function(e) {
console.log(req.error.name, req.error.message);
};
...您也会在 Chrome 中看到它。
在下面的代码中,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');
};
};
尽管此错误不会阻止 "finish closing" 的执行,但它确实会导致 Mocha/Chai Firefox 测试出现问题(尽管如果 req.results.close()
在 req.onsuccess
处理程序。这是 Firefox 中的一个错误吗?如果 AbortError
正在某处传播(设计?),如何成功捕获它(e.target.result.onabort
不起作用)?
此行为符合规范:
https://w3c.github.io/IndexedDB/#opening
"steps for opening a database" 8.2:如果连接在升级之后但在成功之前关闭 - 这会在调用 close()
时发生,因为在升级事务完成之前关闭实际上不会发生 - 然后打开如您所见,请求失败 AbortError
。
Chrome 和 Firefox 中的行为相同; Chrome 默认情况下不记录错误。如果您添加:
req.onerror = function(e) {
console.log(req.error.name, req.error.message);
};
...您也会在 Chrome 中看到它。