Cur*_*ous 0 javascript ajax jquery multithreading http
所以我对JavaScript很新,我知道它没有真正的并发线程.但是如果你想象一个ajax回调在它自己的线程中并且该回调在屏幕上绘制一些按钮然后调用一个函数wire_up_buttons()来为所有可用按钮设置点击事件的回调.从主线程调用该函数是否是好的风格(即从$(document).ready(callback)哪个开始执行?
如果这被认为是糟糕的风格那么你会如何建议我改变我的代码?
这不是风格问题.如果你打电话wire_up_buttons从$(document).ready(callback)您的Ajax调用完成之前,该按钮不会在那里,他们将不会得到接线.(假设wire_up_buttons直接在按钮上挂钩事件.)
您有两个正确的选择:
在呈现新按钮后wire_up_buttons从ajax成功处理程序调用.
请wire_up_buttons使用事件委派容器的按钮都在,在这种情况下,从调用它的ready处理程序(如果你想使用一个)很可能是做的最好的事情.
事件委托是实际将事件挂钩到作为按钮的祖先元素的元素的地方,理想情况下是一些相当本地化的容器,但您可以使用document或document.body(因为它们是页面上所有内容元素的祖先).jQuery的on处理程序支持事件分区; 它的文档有更多的信息.
附注:
"我知道[JavaScript]没有真正的并发线程." 这是环境问题,而不是语言问题.浏览器通过Web worker为JavaScript提供真正并发的线程; 它们提供单个UI线程,但可能有几个非UI线程.JavaScript,这种语言,对于线程主题基本上是无声的.JavaScript是单线程的报告很常见,但不正确.
ready在控制script标记所在位置的代码中基本上没有必要.如果你这样做,只需将script标签放在HTML的末尾,就在结束</body>标签之前,在这种情况下就没有必要了ready.更多YUI最佳实践加速您的网站.
| 归档时间: |
|
| 查看次数: |
319 次 |
| 最近记录: |