这是一个有关在完成之前再次调用JavaScript函数时如何处理JavaScript函数以及与indexedDB操作的关系的问题。对我来说,这没什么特别的深刻或特殊的。
请考虑一个带有关联的indexedDB数据库的网页,该数据库具有按钮prev
和next
,它们通过从对象存储中检索适当的数据来逐步浏览数据库中的记录,并在文档片段,添加必要的事件侦听器,然后将该片段附加到文档中。
我所有的测试示例都进行得很快,但是如果用户连续快速多次单击next
按钮,并且在完全完成之前再次调用了整个过程,将会发生什么?程序会失败还是会显示与最终点击相关的记录而不会出现错误?
我不完全了解我要在此处询问的内容,但是所有调用都会按顺序累积在堆栈和进程中,并且随着事件被触发/触发而累积吗?
是否需要某种形式的保护,例如在下面使用变量busy
,以防止该过程在完成之前再次启动?
谢谢。
function get_new_record()
{
if ( get_new_record.busy ) return;
get_new_record.busy = true;
...
transaction.oncomplete = function()
{
build_HTML();
add_event_listeners();
append_to_DOM();
get_new_record.busy = false;
};
}