使用requestAnimationFrame创建无限事件循环是否有性能成本?
Is there a performance cost to create an infinite event loop using requestAnimationFrame
如果我需要一个事件循环在javascript永远运行(也许查询循环内的REST api),是否有任何性能损失,如果它实现如下
function eventLoop() {
// Call to REST api
requestAnimationFrame(eventLoop);
}
requestAnimationFrame(eventLoop);
或如下所示
http://codepen.io/chriscoyier/pen/ltsegrequestAnimationFrame
,顾名思义,是用来渲染动画的。它具有高达60 fps左右的高迭代率。如果您正在轮询API(可能会花费大量时间来返回响应),这听起来有点过分。
为什么不直接使用setTimeout
?您可以轮询API,然后当请求返回时,可选地再次轮询。
var timer;
function pollAPI() {
$.ajax({
success: function(response) {
if (response == 'something') {
// do something
} else {
// poll again
timer = setTimeout(pollAPI, 50);
}
}
});
}
pollAPI();
这很好,但是如果你在互联网上做一些异步的事情,比如ajax调用,你应该在重新启动之前等待适当的时间,否则你最终会每秒向自己发送60个请求。
相关文章:
- 它是否创建了许多不利于JavaScript性能的变量
- javascript getAttribute是否会影响性能或触发布局
- 缩小document.getElementsByClassName的范围是否有切实的性能优势
- 在运行Javascript/jQuery中的函数之前,检查元素是否存在是否更具性能
- socket.io (nodejs) 是否通过在回调完成期间阻止服务器来影响服务器性能
- 是否有适用于iOS和Android浏览器的性能指南
- 在节点 js 中编写命名函数的性能是否更高
- 最小化作用域链的长度是否会提高性能
- 如何提高javascript html5程序的整体性能:是否可以在两台计算机上同步两个版本
- 递归是否总是提高性能
- 主干:范围界定是否可提高性能
- “==”和“===”之间是否存在显著的性能差异
- 节点.js cron 是否会影响系统性能
- 将常用字符串定义为变量是否会提高性能
- 避免单个变量是否会加快 JavaScript 性能
- 在循环中缓存数组查找是否有任何性能提升
- 使用带有选择框的 jQuery 的 insertAfter() 是否存在已知的性能问题
- 出于性能原因,我是否应该避免多次执行相同的函数声明
- 在 AngularJS 中将对象推送到 $scope.array 与 var x = [ ] 相比时是否存在任何性能问题
- Javascript-命名空间嵌套是否存在任何硬性限制(或性能影响)