论坛首页 Web前端技术论坛

请问一下如何关闭ajax线程呢?

浏览 4368 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-09-28  
一个按钮点一次产生一个线程功能是提取数据并setTimeOut(function,5000)定时刷新页面,现在我多次点击按钮发现之前的线程还没结束就又产生新的线程了,我想在产生新线程之前把旧的关了该怎么做亚~~

问这个问题有点怕怕的,感觉这个论坛很牛,这样的问题是不是弱智了一点,呵呵
   发表时间:2006-09-28  
setTimeout只是在一段时间后执行函数 如果你是递归调用的 那得设置一个开关控制器 简单的说就是设置一个状态 true or false.
0 请登录后投票
   发表时间:2006-09-28  
LZ所说的线程是指什么? HTTPRequest对象么?

0 请登录后投票
   发表时间:2006-09-28  
回楼上的就是Open一个url啦,跟你说的一样就是HTTPRequest呵呵,刚刚看了一下js手册好像如果我var myajax = new ajax的话只要myajax = null就可以关闭这个HTTPRequest了不知道行不行,先试试,晚点再问~
还有上次看了你的帖--遇到这个问题对于prototype.js类库的一点点质疑深受启发,实在非常感谢你哦,我也是因为看了你的贴我才进这个社区的,刚开始学ajax不懂,以后请多多指教,谢谢
回flhs:
你的方法我曾经考虑过视乎并不可行,循环跳出了但是线程仍然存在,我会结合你的方法再试一下的,非常感谢~
0 请登录后投票
   发表时间:2006-09-28  
js其实也是采取内存回收机制的,如果某个对象一旦无用的话,浏览器会自动回收它所占用的内存的。

0 请登录后投票
   发表时间:2006-09-28  
steven_shen 写道
回楼上的就是Open一个url啦,跟你说的一样就是HTTPRequest呵呵,刚刚看了一下js手册好像如果我var myajax = new ajax的话只要myajax = null就可以关闭这个HTTPRequest了不知道行不行


foxty 写道
js其实也是采取内存回收机制的,如果某个对象一旦无用的话,浏览器会自动回收它所占用的内存的。


var obj = new Object();
…………
…………
obj = null;

这样对象obj就可以回收了。

和Java内存回收机制一样,这样需要确定该对象或方法(JavaScript中)不再使用,否则应该备份原有的对象或方法,防止有用的资源自动销毁。
0 请登录后投票
   发表时间:2006-09-30  
我知道啦,其实不关ajax的事,是我在new ajax之后在里面放了个SetTimeOut(function,5000)让函数无限循环下去,但是SetTimeOut又是每次开了以后不会自动关闭所以循环的时间越来越短,给人的错觉好像是线程越开越多,所以我在函数运行的前端放了ClearTimeOut,问题解决
0 请登录后投票
   发表时间:2006-09-30  
foxty 写道
js其实也是采取内存回收机制的,如果某个对象一旦无用的话,浏览器会自动回收它所占用的内存的。



js里有内存回收机制吗?应该没有吧。本人认为是IE的作用,当IE最小化的时候它会把JS在内存中开辟的存储单元暂时清理。
0 请登录后投票
   发表时间:2006-09-30  
当然会有内存回收机制了,要不你的IE不断浏览网页,早就outofmemory了。

看看《javascript权威指南》第四版的201页吧,写的很清楚。
0 请登录后投票
   发表时间:2006-10-01  
foxty 写道
当然会有内存回收机制了,要不你的IE不断浏览网页,早就outofmemory了。

看看《javascript权威指南》第四版的201页吧,写的很清楚。


呵呵,页码都列出来了。

我也列一本参考书,Nicholas的《Professional JavaScript for Web Development》中P69。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics