在JavaScript中,从主线程和回调调用函数是一种好的风格吗
所以我对JavaScript非常陌生,我知道它没有真正的并发线程。但是如果您想象一个ajax回调在它自己的线程中,并且该回调在屏幕上绘制一些按钮,然后调用一个函数在JavaScript中,从主线程和回调调用函数是一种好的风格吗,javascript,jquery,ajax,multithreading,http,Javascript,Jquery,Ajax,Multithreading,Http,所以我对JavaScript非常陌生,我知道它没有真正的并发线程。但是如果您想象一个ajax回调在它自己的线程中,并且该回调在屏幕上绘制一些按钮,然后调用一个函数wire\u up\u buttons(),该函数为所有可用按钮上的单击事件设置回调。从主线程调用该函数(即从$(document).ready(callback)开始的执行)是一种好的样式吗 如果这被认为是糟糕的风格,那么您会建议我如何更改代码?这不是风格的问题。如果您从$(文档)调用wire\u按钮。ready(callback)在
wire\u up\u buttons()
,该函数为所有可用按钮上的单击事件设置回调。从主线程调用该函数(即从$(document).ready(callback)
开始的执行)是一种好的样式吗
如果这被认为是糟糕的风格,那么您会建议我如何更改代码?这不是风格的问题。如果您从
$(文档)调用wire\u按钮
。ready(callback)
在ajax调用完成之前,按钮将不在那里,它们也不会连接起来。(假设wire\u up\u按钮
将事件直接挂接到按钮上。)
您有两个正确的选项:
ajax
成功处理程序调用wire\u up\u按钮
wire\u-up\u按钮
在一个容器上使用事件委托(按钮都在其中),在这种情况下,从ready
处理程序调用它(如果您想使用一个)可能是最好的做法document
或document.body
(因为它们是页面上所有内容元素的祖先).Event Deligation由jQuery的on
处理程序支持;它有关于它的更多信息
旁注:
- “我知道[JavaScript]没有真正的并发线程。”这是一个环境问题,而不是语言问题。浏览器通过为JavaScript提供真正的并发线程;它们提供一个UI线程,但可能有几个非UI线程。JavaScript语言本质上不涉及线程。JavaScript是单线程的报告很常见,但不正确
在您控制ready
标记的位置的代码中基本上是不必要的。如果您这样做,只需将script
标记放在HTML的末尾,就在关闭script
标记之前,在这种情况下不需要
。更多信息请参阅ready
$(文档)调用连接按钮
。准备好(回调)
在ajax调用完成之前,按钮不会在那里,也不会连接。(假设连接按钮
直接在按钮上挂起事件。)
您有两个正确的选项:
ajax
成功处理程序调用wire\u up\u按钮
wire\u-up\u按钮
在一个容器上使用事件委托(按钮都在其中),在这种情况下,从ready
处理程序调用它(如果您想使用一个)可能是最好的做法document
或document.body
(因为它们是页面上所有内容元素的祖先).Event Deligation由jQuery的on
处理程序支持;它有关于它的更多信息
旁注:
- “我知道[JavaScript]没有真正的并发线程。”这是一个环境问题,而不是语言问题。浏览器通过为JavaScript提供真正的并发线程;它们提供一个UI线程,但可能有几个非UI线程。JavaScript语言本质上不涉及线程。JavaScript是单线程的报告很常见,但不正确
在您控制ready
标记的位置的代码中基本上是不必要的。如果您这样做,只需将script
标记放在HTML的末尾,就在关闭script
标记之前,在这种情况下不需要
。更多信息请参阅ready
连接按钮
功能只是将按钮连接到“ID”从ajax回调中获取的按钮。然后在这些按钮上注册回调。它还可以在其他按钮上注册回调。请在此上下文中解释事件委派。我认为我的问题不够清楚。我正在调用wire\u-up\u buttons()
函数在ajax请求之前以及在回调中都可以使用。因此总会有一些事情发生谢谢你的回答!目前,我的连接按钮
函数只是将按钮连接到“ID”从ajax回调中获取的按钮。然后在这些按钮上注册回调。它还可以在其他按钮上注册回调。请在此上下文中解释事件委派。我认为我的问题不够清楚。我正在调用wire\u-up\u buttons()
函数在ajax请求之前以及回调中执行。因此总会发生一些事情