IndexedDB onsuccess/onfailure 事件监听器:为什么将其分配在打开操作之后而不是之前?

问题描述 投票:0回答:1

例如

let db;

// Let us open our database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

// these event handlers act on the database being opened.
DBOpenRequest.onerror = (event) => {
  note.innerHTML += "<li>Error loading database.</li>";
};

DBOpenRequest.onsuccess = (event) => {
  note.innerHTML += "<li>Database initialized.</li>";
};

我的理解是

DBOpenRequest.onerror = xxx
正在设置一个事件监听器来处理事件
error

但是为什么我们要在事件发出语句(即打开操作const DBOpenRequest = window.indexedDB.open)执行之后

设置事件处理程序,而不是之前?

有没有可能在

after执行事件发射语句并且before我们设置error

事件处理程序时,事件已经发射,因此它永远不会被任何事件处理程序捕获(因为有完全没有)?

javascript indexeddb
1个回答
0
投票
JavaScript 具有“运行至完成”语义;也就是说,您编写的代码不会被代码块中间触发的事件中断。在您的代码完成运行并将控制权返回给浏览器之前,不会调用事件处理程序。

© www.soinside.com 2019 - 2024. All rights reserved.