相关疑难解决方法(0)

递归'setTimeout'函数调用最终会杀死JS引擎吗?

假设我每隔10秒就需要从服务器获取一些数据.我将有一个函数通过AJAX获取数据,然后调用setTimeout再次调用此函数:

function GetData(){
   $.ajax({
       url: "data.json",
       dataType: "json",
       success: function(data){
         // do somthing with the data

         setTimeout(GetData, 10000);
      },
      error: function(){
         setTimeout(GetData, 10000);
      }
   });
}
Run Code Online (Sandbox Code Playgroud)

如果有人让网页全天开放,它可能会有数千个递归函数调用.

我不想使用setInterval,因为它没有考虑网络延迟.如果网络繁忙并且处理请求需要15秒,我不想在获得AJAX超时之前再次询问它.

处理需要定期调用的函数的最佳方法是什么?

javascript recursion settimeout

13
推荐指数
1
解决办法
3691
查看次数

是否使用递归process.nexttick让其他进程或线程工作?

从技术上讲,当我们执行以下代码(recursive process.nexttick)时,CPU使用率将达到100%或接近.问题是想象我在一台带有一个CPU的机器上运行,并且还有另一个节点HTTP服务器工作的过程,它如何影响它?

该线程是否正在进行递归process.nexttick让HTTP服务器工作?

如果我们有两个递归process.nexttick的线程,他们都获得50%的份额?

由于我不知道任何一个核心的机器都无法尝试.而且由于我对线程之间CPU的时间共享的理解在这种情况下是有限的,我不应该如何尝试使用具有4核CPU的机器.

function interval(){
  process.nextTick(function(){
    someSmallSyncCode();
    interval();  
  })
} 
Run Code Online (Sandbox Code Playgroud)

谢谢

process cpu-usage multiprocessing node.js

5
推荐指数
1
解决办法
2416
查看次数