openCursor之后的两次成功

时间:2017-01-12 20:35:47

标签: javascript indexeddb

我可以将两个函数绑定到openCursor的onsuccess事件吗? 我想这样做是为了填充第一行中的初始值。



>>> dict(my_dict)
{'Wed': 'Wednesday', 'Sun': 'Sunday', 'Fri': 'Friday', 'Tue': 'Tuesday', 'Mon': 'Monday', 'Thu': 'Thursday', 'Sat': 'Saturday'}




1 个答案:

答案 0 :(得分:1)

是。通常,onsuccess只是添加事件监听器的语法糖。主要区别在于设置onsuccess会覆盖所有其他事件侦听器,而使用正确语法添加事件侦听器则不会。您的代码将无法正常工作,因为第二次设置onsuccess只会覆盖第一个侦听器。

尝试以下方法:

function foo() {
  var request = store.openCursor();
  request.addEventListener('success', firstListenerFunction);
  request.addEventListener('success', secondListenerFunction);
}

无法保证首先会通知哪个听众。通常它将是第一个侦听器,因为大多数实现以注册顺序通知侦听器。但这并不能保证。

此外,每次都会通知两个听众。请记住性能影响。

IDBRequest等各种indexedDB API对象基本上都是从EventTarget类继承的。 Here是学习EventTarget的有用阅读材料。 EventTarget遍布各处。