如果在当前调用完成之前再次调用Javascript函数,该如何处理?

时间:2019-05-02 04:53:54

标签: javascript

这是一个有关在完成之前再次调用JavaScript函数时如何处理JavaScript函数以及与indexedDB操作的关系的问题。对我来说,这没什么特别的深刻或特殊的。

请考虑一个带有关联的indexedDB数据库的网页,该数据库具有按钮prevnext,它们通过从对象存储中检索适当的数据来逐步浏览数据库中的记录,并在文档片段,添加必要的事件侦听器,然后将该片段附加到文档中。

我所有的测试示例都进行得很快,但是如果用户连续快速多次单击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;
     };
  }

0 个答案:

没有答案