Sol*_*oub 34 javascript ajax polling setinterval
对于需要刷新以设置间隔呈现给用户的部分数据的简单webapp,使用setInterval()从端点获取JSON而不是使用适当的轮询框架是否有任何缺点?
为了举例,我想说我每5秒刷新一次处理作业的状态.
Fel*_*ing 54
从我的评论:
我会使用setTimeout [docs]并在收到上一个回复时总是调用它.这样,您可以避免可能的拥塞或功能堆叠或任何您想要调用它的情况,以防请求/响应时间超过您的间隔.
所以像这样:
function refresh() {
// make Ajax call here, inside the callback call:
setTimeout(refresh, 5000);
// ...
}
// initial call, or just call refresh directly
setTimeout(refresh, 5000);
Run Code Online (Sandbox Code Playgroud)
bsc*_*ter 12
可以使用Promises在最近的浏览器中实现简单的非阻塞轮询功能:
var sleep = time => new Promise(resolve => setTimeout(resolve, time))
var poll = (promiseFn, time) => promiseFn().then(
sleep(time).then(() => poll(promiseFn, time)))
// Greet the World every second
poll(() => new Promise(() => console.log('Hello World!')), 1000)
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
var i = 0, loop_length = 50, loop_speed = 100;
function loop(){
i+= 1;
/* Here is your code. Balabala...*/
if (i===loop_length) clearInterval(handler);
}
var handler = setInterval(loop, loop_speed);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33464 次 |
| 最近记录: |