gpt4 book ai didi

javascript - Javascript事件什么时候执行?

转载 作者:行者123 更新时间:2023-11-30 05:47:46 25 4
gpt4 key购买 nike

当我看 JS 代码时:

socket = new WebSocket(server);

socket.onopen = function (evt)
{
// STUFF
};

我总是有点困惑。如果你用任何其他语言写了类似的东西,onopen 'eventhandler' 很有可能在与 server 的连接已经建立后被绑定(bind),导致你错过了 onopen 事件。即使第一行由 Javascript 解释器异步执行,第二行仍有可能为时已晚。

为什么上面的代码在 Javascript 中运行良好,而在 C# 中(例如)它应该写成:

WebSocket socket = new WebSocket();

socket.onopen = new EventHandler<EventArgs>(Open);

socket.Connect(server);

最佳答案

与大多数其他语言不同,Javascript 是严格的单线程的。
当您的代码正在运行时,不会发生任何其他事情。

onopen 在控制返回到事件循环之前无法触发(在该代码的同步部分完成之后)。

请注意,这是真的,因为 onopen 是为响应异步事件(在本例中为套接字)而触发的。
如果它是同步引发的,那将不是真的;要解决此问题,同步引发与此模式一起使用的事件的代码应在 process.nextTick 中异步引发事件。

关于javascript - Javascript事件什么时候执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16905035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com