问题标签 [eventqueue]

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 投票
0 回答
32 浏览

javascript - JavaScript 运行时:在“事件队列”中的条件

在许多解释事件循环的示例中,他们总是使用setTimeout来说明它。

根据这些解释,当 JS 运行时遇到setTimeout指令时,它知道有一个回调,所以它把指令Event Queue放在Callback Queue.

我的问题是:运行时如何知道它是否必须将指令放入Event Queue?它是否检查参数,如果参数是一个函数,这意味着它是一个回调?标准是Event Queue什么?

0 投票
1 回答
205 浏览

javascript - 事件队列和任务队列有什么区别吗?

我对这两个名字有点困惑,它们是一样的吗?

0 投票
0 回答
45 浏览

java - 如何返回自定义类型从视图(GUI)到控制器?

我正在为一个 42 项目制作一个名为 Swingy 的 MVC 游戏,它需要我在 MVC 模式中实现一个控制台和一个 GUI 视图。我想我会有一个我的视图实例(控制器内的 GUI 或控制台)。所以我创建了一个名为 Viewable 的接口,两个视图都可以实现。问题是我的控制器调用 this.view.newHero() 应该返回一个新的 Hero() 对象,但我不知道如何从 GUI 获取返回值。

我试过使用 ArrayBlockingQueue 但问题似乎源于我界面中的返回值。

控制器

界面

控制台查看 newHero 方法(缩短)

图形用户界面

在 GUI 视图中,用户单击按钮开始新游戏,然后应打开 JOptionPane 输入对话框并询问英雄名称。然后它应该返回一个具有此名称的新英雄。

0 投票
1 回答
52 浏览

c - 事件队列清理

在我的 Tcl 扩展中,辅助线程正在用事件填充 Tcl 事件队列;这些事件包含指向具有动态生命周期的结构的指针。

什么是确保没有带有指向已释放结构的悬空指针的事件留在事件队列中的正确策略?我可以阻止辅助线程创建新事件;目前我Tcl_DoOneEvent(TCL_DONTWAIT)在确保不能创建新事件和取消分配结构之前调用一个循环,直到它返回 0(即事件队列为空)。

这是正确的方法吗?

在相关说明中,我不确定的目的Tcl_ThreadAlert():如果每次调用后都需要这样做Tcl_ThreadQueueEvent(),为什么不包含警报Tcl_ThreadQueueEvent()

最后,我的代码没有调用Tcl_CreateEventSource(),因为它似乎不需要设置或检查过程,因为涉及第二个线程。这值得担心吗?

0 投票
1 回答
64 浏览

linked-list - 如何按日期顺序创建事件队列

我正在尝试创建一个事件队列,并且我希望能够在恒定时间内从队列中间插入和删除,如下所示:

3446 --- 9493 --- 15969 --- 48381

从现在开始,这个数字可能是毫秒,或者诸如此类。

如何在 9493 和 15969 事件之间插入事件?

我可以使用二进制搜索来查找队列中具有所需时间的事件,但是有没有更简单的方法?

0 投票
1 回答
81 浏览

java - Java Swing 组件初始化 NullPointerException

我正在尝试制作一个简单的应用程序,它可以让您选择一些文件并对其进行一些逻辑处理。我通过 IntelliJ IDEA 中的 JFrame Palette 构建器创建了界面。

}

这就是我的 App 类的外观,它是应用程序的重点。没有使用“新”初始化程序定义任何字段,因为 IntelliJ 会自动为我执行此操作,如果我单击查看组件的用法(请参见以下屏幕截图): 变量的绑定 所以,我有我的应用程序扩展了 JFrame,我的 JButtons 由 IDE 初始化和绑定,我这样启动它:

发生了什么,在 initViews 方法中我设置了侦听器,但它抛出了 NullPointerException。在方法内部,它看起来像这样:

}

例外:

线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException

单击错误,它将指向我在 buttonFolder 上设置 actionListener 的行。

我的理论是,应用程序的初始线程、应该完成/编辑 GUI 的 EDT 线程以及它们之间的组件创建之间存在某种冲突。

我检查了是否在 EDT 线程上调用了 initViews,答案是肯定的。我尝试在 Swing 工作者中初始化视图以明确强制它在 EDT 线程上,但它不起作用。我还尝试将添加侦听器等推迟 200-400 毫秒以将 GUI 提供给 init,但我没有成功。

期待任何意见,谢谢。

0 投票
0 回答
42 浏览

javascript - 为什么即使主执行堆栈为空,事件队列中的函数也不会被调用?

我正在阅读有关事件队列的文章。

并且作者说“事件队列中的函数在发现主执行堆栈为空之前不会执行

为了证明这一点,他提供了以下示例

因此,在这种情况下,documentClickHandler进入事件队列。并且在主执行堆栈为空documentClickHandler之前不会执行该函数。在这种情况下,直到函数完成它的工作,documentClickHandler才会被执行。正确的 !。a

但这并不像它缩进的那样工作......
我认为它甚至不听点击,这是由于 function 完成的繁重工作a

i)您能否提供任何其他解释相同的示例,该示例可以证明事件队列函数在执行堆栈为空之前不会执行?

ii) 为什么这个例子不起作用!我在函数a执行时单击了窗口,而 documentClickHandler 在函数a完成工作时甚至没有显示它工作!

0 投票
0 回答
43 浏览

javascript - setTimeout 意外延迟内的控制台日志

以下代码给出了意外的结果。它只等待 1 秒延迟(而不是 delayBySeconds() 函数指定的 5 秒),然后打印输出,如下所示。

输出:

此外,如果在 delayBySeconds() 中重新激活了 console.log(now),则延迟生效,否则在“Gamma”之后立即打印“5 秒过去”。另一个意想不到的结果是,如果不是 ()=> ,我只是在 setTimeout() 的参数中使用裸 console.log("Beta") ,“Beta”会在“Gamma”之前打印。有什么建议是什么原因造成的?

0 投票
2 回答
152 浏览

javascript - JavaScript解释器如何将全局语句添加到事件队列中?

我不确定全局范围内的语句如何放入 JavaScript 事件队列中。我首先认为解释器通过并将所有全局语句逐行添加到事件队列中,然后执行并执行每个事件,但该逻辑与下面给出的示例不符。JavaScript 解释器如何将全局语句添加到事件队列中,为什么下面给出的两个示例的输出不同?

上面代码的控制台输出是

现在考虑这个例子。在这里,不同之处在于 promise 回调的主体,因为有一个嵌套setTimeout

上面代码的控制台输出是

我不明白的是添加到事件队列中的顺序。第一个片段暗示promise p 将运行,然后在其执行期间,resolve 被放入事件队列中。一旦p's弹出所有堆栈帧,然后resolve运行。在比p.then(...)运行之后,最后是最后一个console.log("2");

在第二个示例中,以某种方式将 number 在2number 之前打印到控制台1。但是事情不会按这个顺序添加到事件队列中吗

我的脑海中显然有某种事件队列逻辑错误,但我一直在阅读我能阅读的所有内容,但我被卡住了。对此的任何帮助将不胜感激。

0 投票
0 回答
53 浏览

android - 为什么 eventQueue 需要 looper-sensor android API,ASensorManager_createEventQueue

将传感器绑定到事件队列的 android 传感器 API,它使用 ASensorManager_createEventQueue: ASensorEventQueue * ASensorManager_createEventQueue( ASensorManager *manager, ALooper *looper, int ident, ALooper_callbackFunc 回调, void *data )

该函数接收一个looper,我不确定我为什么需要这个looper?(假设我不想要任何回调)有一个 API 用于从这个 eventQueue 中读取事件,ASensorEventQueue_getEvents,那么为什么我们还需要一个 looper 呢?我是否还需要将 Looper 池化?或者使用 getEvents 就足够了吗?

谢谢舒基