问题标签 [event-queue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5474 浏览

javascript - 我可以更改 JavaScript 中的事件队列优先级吗?

发生错误时,我需要播放独特的声音。该错误是由于快速输入的大约 200 个条码中的一个出现问题所致。事件队列似乎首先处理键盘输入(条形码扫描仪模拟),然后播放我的声音。因此,如果条形码被快速扫描,错误声音会留在队列中,被下一次扫描撞到。

我可以操纵队列的优先级吗?

0 投票
1 回答
2038 浏览

flash - 如何将多个事件排队到 actionscript 3 中的单个 eventHandler?

我正在构建一个加载小游戏的框架(在 swf 中),并且遇到了问题。

我目前有一个监听器来监听子小游戏发送到父框架的事件。但是,如果子级发送的两个消息(事件)彼此过于接近,似乎第一个事件会被忽略,这会导致一些消息根本无法到达父框架。

我读到您可以以某种方式将动作脚本事件排队,以便以 FIFO 为基础处理事件。我怎样才能做到这一点?这个问题的文档似乎非常稀缺,所以我很难过。

非常感谢!

0 投票
4 回答
8487 浏览

javascript - 在 javascript/jquery 中获取正在运行的线程 id 的方法

我是 javascript/jquery 的新手。我有一个简单的问题,其中一个 java 脚本函数正在运行,并且想查看该线程的线程 ID。在java中我们确实喜欢

Thread.getID();//in java

这将打印正在运行的线程的线程ID。以类似的方式,我们用来获取 javscript 中正在运行的线程 id 的函数是什么。

其实我想要的是..

在我的 JavaScript 中,我有一个正在监听频道的监听器。当通道中有消息时,会调用回调方法并处理数据。所以在这里我试图看看它是如何以这种方式工作的。假设频道中有 10 条消息,并且每条消息都会调用回调。

假设回调方法正在为消息“a”运行,并且在处理消息“a”的数据时,它收到了另一条消息“b”。消息“a”的处理完成后,是否会调用“b”的回调方法?

我想通过在回调函数中打印线程号来检查这一点,该函数告诉它是按顺序运行(一个线程)还是多个线程。这就是为什么我试图打印线程 ID。感谢您的回复。

谢谢, 斯瓦蒂

0 投票
5 回答
1391 浏览

java - Java + Swing:编写代码来合并更改事件

我有这个数据流,大致:

DataGenerator 是快速生成数据的东西;DataFormatter 是为了显示目的而对其进行格式化的东西;而 UI 只是一堆 Swing 元素。

我想让我的 DataGenerator 像这样:

this.pcs.firePropertyChange(...)只要我的数据生成器有新数据就打电话;然后我可以dataGenerator.addPropertyListener(listener)listener负责将更改推送到 DataFormatter 然后到 UI 的地方做。

这种方法的问题在于,每秒有数千个 dataGenerator 更改(每秒 10,000 到 60,000 次,具体取决于我的情况),并且为 UI 格式化它的计算成本足够高,以至于给我的中央处理器; 实际上,我在视觉上关心的只是每秒最多 10-20 次变化。

有没有办法使用类似的方法,但在更改事件到达 DataFormatter 之前合并它们?如果我收到关于单个主题的多个更新事件,我只关心显示最新的,并且可以跳过所有以前的。

0 投票
2 回答
1542 浏览

java - 为什么 AbstractTableModel 上的 fireTableChanged() 会先通知侦听器?

这很模糊,但由于某种原因,通知AbstractTableModel是从后到先的,导致我的代码出现错误。我可以修复它,但我想知道是否有人知道为什么以这种方式完成通知?

0 投票
2 回答
1437 浏览

java - SwingUtilities 线程和 AWT.EventQueue 线程之间的区别

我正在使用 Netbeans 7 IDE 开发 GUI 桌面应用程序。当我创建 JFrame 类时,Netbeans 使用

java.awt.EventQueue.invokeLater(new Runnable() { }

启动可运行对象。但我的应用程序也有摆动组件。

我想知道两者的区别

用于 GUI 应用程序开发。

0 投票
1 回答
296 浏览

python - pygame 事件队列函数在鼠标输入时崩溃

- -解决了 - -

这整个事情是因为事件队列中的一个小错字。我将“==”拼错为“--”

我已经把头撞在墙上好几天了,但我仍然无法弄清楚为什么会崩溃:

当我尝试运行代码时,它会完美运行,直到我将鼠标悬停在窗口上,然后给我错误:

提前感谢任何可能理解为什么会崩溃的人

0 投票
1 回答
129 浏览

javascript - JS浏览器事件处理

现在我对浏览器事件有点困惑。我仍然不确定事件循环是如何开始工作的。例如,当我在某个函数的中间分派自定义事件时,事件处理是立即开始还是移动到事件队列?那么其他事件呢?如果我单击或加载页面,会发生什么?事件处理过程什么时候开始?

0 投票
2 回答
1258 浏览

message-queue - 具有广播和路由功能的轻量级消息总线?

我正在尝试找到可以处理以下内容的最轻量级的消息总线(队列?):

  1. 生产者 A 订阅总线。总线是通过众所周知的标识形式(如名称、套接字或其他东西)指定的。
  2. 消费者 B 订阅相同的总线并仅注册某种类型的消息。
  3. 消费者 C 订阅了同一条总线,并注册了另一种与 B 重叠的消息。
  4. 生产者 A 将一条消息放入总线,使 B 和 C 都感兴趣。B 和 C 都接收到消息(不仅仅是其中一个,而是两个)。

A、B、C 和总线位于不同的机器中。

0 投票
1 回答
6932 浏览

javascript - Event Loop、Callback Queue、Javascript的单线程是如何连接的?

总体目标

我想知道 javascript 环境的以下部分如何作为一个系统互连

  • Javascript引擎
  • 事件循环
  • 事件队列

我们可以将其限制在浏览器环境中,因为节点已在另一篇文章(此处)中介绍过

我(相信)理解的事情:

  • Javascript 是单线程的,因此只有一个调用栈。

  • Javascript 环境仅提供少数真正异步的函数。这些可能包括 setTimeout()、setInterval() 和 I/O 函数。

  • 如果不使用其中之一,开发人员无法创建自己的异步函数。
  • Javascript 本身是同步运行的,但是一旦当前调用堆栈被清除,通过它的异步函数可以回调可能的阻塞函数。

例子:

示例步骤:

(如果我错了,请更正步骤)

  1. 记录“同步代码开始...”
  2. setTimeout 被添加到堆栈但立即返回控制
  3. setTimeout 被发送到不同的“线程”……“工人”?在javascript的单线程之外计算2000毫秒
  4. 记录“同步代码完成...”
  5. 2000 毫秒后 asyncLog() 被推送到事件队列
  6. 因为调用堆栈是明确的,所以事件循环会检查事件队列中的待处理回调
  7. asyncLog() 从队列中移除并由事件循环推入堆栈
  8. 记录了“异步功能已完成”
  9. 调用堆栈现在很清楚

问题

如果有人可以概述异步函数(例如 setTimeout)从它们第一次到达调用堆栈到它们被回调到调用堆栈的时间和位置的步骤概述,那么这些不需要一一回答。

  1. 在第 3 步,谁产生了这个新线程?是浏览器吗?
    • 这个新线程被阻止正确吗?
    • 如果您有一个创建 1000 个 setTimeouts 的循环会发生什么。是否创建了 1000 个“线程”?
    • 一次可以产生多少个线程有限制吗?
    • 当新线程完成执行时,它是如何进入队列的?
  2. 谁提供事件队列?
  3. 谁提供事件循环?
    • 事件循环是否轮询事件队列?
    • javascript 的线程是否知道事件循环?还是事件循环只是将东西压入堆栈?
    • 事件循环如何知道堆栈何时清空?