在 JavaScript 中使用全局引用的函数内设置超时的奇怪行为

发布于 2024-09-03 14:15:27 字数 641 浏览 7 评论 0原文

这是函数和全局变量:

      $note_instance = Array();
      $note_count = 0;

      function create(text){
        count = $note_count++;

        time = 5000;            

        $note_instance[count] = $notifications.notify("create", text);

        setTimeout(function(){ $note_instance[count].close() }, time);
      }

该函数只是打开一个通知,设置一个超时以在 5 秒内关闭它。

因此,如果我称此

 create("Good Note 1");
 create("Good Note 2");
 create("Good Note 3");

Ecah 音符应在其创建后 5 秒后关闭,但始终且只有最后一个音符会关闭,在本例中为“Good Note 3”。

每个注释对象在 $note_instance 全局数组中都有自己的条目,因此超时不应覆盖自身。

我在这里缺少什么?提前致谢

Here is the the function and the globals:

      $note_instance = Array();
      $note_count = 0;

      function create(text){
        count = $note_count++;

        time = 5000;            

        $note_instance[count] = $notifications.notify("create", text);

        setTimeout(function(){ $note_instance[count].close() }, time);
      }

The function simply opens a notification, a sets a timeout to close it in 5 seconds.

so if i call this

 create("Good Note 1");
 create("Good Note 2");
 create("Good Note 3");

Ecah note should close 5 seconds from their creation, however always and only the last note closes, in this case "Good Note 3".

Each note object has its own entry in the the $note_instance global array so the timeouts should no be overwriting themselves.

What am i missing here folks? Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你的笑 2024-09-10 14:15:27

count 是一个全局变量。

您需要通过在函数内添加 var count 将其更改为局部变量。

count is a global variable.

You need to change it to a local variable by adding var count inside the function.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文