首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IndexedDB `IndexedDB‘事件中的` `AbortError`’事件

IndexedDB `IndexedDB‘事件中的` `AbortError`’事件
EN

Stack Overflow用户
提问于 2016-03-25 18:32:00
回答 1查看 532关注 0票数 2

在下面的代码中,火狐添加了一个AbortError作为控制台,而Chrome没有。

代码语言:javascript
复制
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不起作用)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-28 16:29:43

这种行为符合规范要求:

https://w3c.github.io/IndexedDB/#opening

“打开数据库的步骤”8.2:如果连接在升级后关闭,但在成功之前--这在调用close()时会发生,因为在升级事务完成之前,关闭实际上不会发生--那么打开的请求就会像您看到的那样在AbortError中失败。

Chrome和Firefox的行为是一样的;Chrome只是在默认情况下不记录错误。如果你加上:

代码语言:javascript
复制
req.onerror = function(e) {
  console.log(req.error.name, req.error.message); 
};

..。你也会在Chrome上看到它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36225779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档