在下面的代码中,火狐添加了一个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/柴测试中造成问题(尽管如果在req.results.close()处理程序中调用了req.onsuccess,则不会发生此类错误。这是Firefox中的一个bug吗?如果AbortError被传播到某个地方(通过设计?),如何成功地捕获它(e.target.result.onabort不起作用)?
发布于 2016-03-28 16:29:43
这种行为符合规范要求:
https://w3c.github.io/IndexedDB/#opening
“打开数据库的步骤”8.2:如果连接在升级后关闭,但在成功之前--这在调用close()时会发生,因为在升级事务完成之前,关闭实际上不会发生--那么打开的请求就会像您看到的那样在AbortError中失败。
Chrome和Firefox的行为是一样的;Chrome只是在默认情况下不记录错误。如果你加上:
req.onerror = function(e) {
console.log(req.error.name, req.error.message);
};..。你也会在Chrome上看到它。
https://stackoverflow.com/questions/36225779
复制相似问题