如果我需要 javascript 中的事件循环永远运行(可能在循环内查询 REST api),如果按如下方式实现,是否会有性能损失
function eventLoop() {
// Call to REST api
requestAnimationFrame(eventLoop);
}
requestAnimationFrame(eventLoop);
或如这里所示
最佳答案
requestAnimationFrame
顾名思义,用于渲染动画。它具有高达 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();
关于javascript - 使用 requestAnimationFrame 创建无限事件循环是否有性能成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31778032/