首页 新闻 会员 周边

为什么Comet的轮询技术会使用setTimeout,而不用setInterval

0
悬赏园豆:5 [已解决问题] 解决于 2014-03-11 15:27

既然是轮询,就重复用XHR去请求数据,可是为什么现在所知道的轮询技术文章里全用setTimeout呢?它只是延时执行一次啊?

白菜帮子的主页 白菜帮子 | 初学一级 | 园豆:191
提问于:2014-03-11 14:50
< >
分享
最佳答案
0

个人以为,这个问题涉及 回调函数 和 函数递归 的知识。

轮询请求如果不需要等待结果返回,那么完全可以使用setInterval来发起定时请求。
但很显然长轮询是需要等待结果返回,然后再次发起请求的。

收获园豆:5
飞扬的尘埃 | 小虾三级 |园豆:1318 | 2014-03-11 15:16

那么即使用setTimeout实现轮询的话,也是需要辅助循环或者自身递归才能实现轮询效果的吧?

白菜帮子 | 园豆:191 (初学一级) | 2014-03-11 15:20

@白菜帮子: 你应该把服务端处理请求也加入进来考虑的,轮询本质就是递归,递归和循环可是两码事。

飞扬的尘埃 | 园豆:1318 (小虾三级) | 2014-03-11 15:22

@飞扬的尘埃: OK!是我看的书有问题,丫写错了。是需要递归的。

白菜帮子 | 园豆:191 (初学一级) | 2014-03-11 15:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册