在JavaScript中,从主线程和回调中调用函数是一种好的风格吗
Is it good style in JavaScript to call a function from the main thread and in a callback
所以我对JavaScript非常陌生,我知道它没有真正的并发线程。但是,如果您想象一个ajax回调在其自己的线程中,并且该回调在屏幕上绘制一些按钮,然后调用一个函数wire_up_buttons()
,该函数为所有可用按钮上的单击事件设置回调。从主线程(即从$(document).ready(callback)
开始的执行)调用该函数是一种好的风格吗?
如果这被认为是糟糕的风格,那么你会建议我如何更改代码?
这不是风格的问题。如果在ajax调用完成之前从$(document).ready(callback)
调用wire_up_buttons
,按钮将不在那里,也不会连接起来。(假设wire_up_buttons
直接在按钮上挂起事件。)
您有两个正确的选项:
-
呈现新按钮后,从
ajax
成功处理程序调用wire_up_buttons
。 -
使
wire_up_buttons
在按钮所在的容器上使用事件委派,在这种情况下,从ready
处理程序调用它(如果您想使用它)可能是最好的做法。
事件委派是指将事件实际挂接到一个元素上,该元素是按钮的祖先元素,理想情况下是一些相当本地化的容器,但您可以使用document
或document.body
(因为它们是页面上所有内容元素的祖先)。jQuery的on
处理程序支持事件挖掘;它的文档中有更多的信息。
旁注:
-
"我知道[JavaScript]没有真正的并发线程。"这是环境的问题,而不是语言问题。浏览器通过网络工作者为JavaScript提供真正的并发线程;它们提供单个UI线程,但可能提供多个非UI线程。JavaScript语言在线程主题上基本上是沉默的。JavaScript是单线程的报告很常见,但不正确。
-
在控制
script
标记的位置的代码中,ready
在很大程度上是不必要的。如果您这样做了,只需将script
标记放在HTML的末尾,刚好在关闭</body>
标记之前,在这种情况下就不需要ready
了。更多关于YUI加速网站的最佳实践。
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 有没有一种方法可以仅使用HTML/CSS来隐藏基于特定值的数据单元格
- 有没有一种方法可以从URL跟踪请求的域
- 有没有一种方法可以列出Ember.Object的所有绑定
- 有没有一种方法可以获得three.js的最小/lite版本
- 在JavaScript中,从主线程和回调中调用函数是一种好的风格吗
- 寻找一种风格切换器
- 创建过于简单的函数是一种糟糕的风格吗
- 有没有一种方法可以将维基百科的文章嵌入网站并进行风格化
- 试图找到一种好看的方法来使用函数式编程风格转换这个数组
- 有没有一种简单的方法来转换“;字体"style属性添加到其中的每一个'他的个人风格
- 为什么混淆JavaScript代码是一种糟糕的风格
- 另一种风格的ajax调用
- SUmmernote不能正常显示.我是说这是一种风格
- 正在寻找一种重构D3.js风格的方法链接模式的方法