javascript - Node.js 超出最大调用堆栈

标签 javascript node.js recursion node-mysql node-request

我有same question as earlier但无法将答案与我的代码联系起来。这是我的错误:RangeError:超出最大调用堆栈大小

我的代码的高度简化的伪版本是这样的:

function make_request(url, other_params){ 

  request(url, function(response){

    if(something) var some_var = 'some value';
    else var some_var = '';

    //do something with response to generate, some_var, and insert into DB

    var my_arr = [some_var];

    connection.query('INSERT my_table SET name = ?', my_arr, function(err, rows, fields) {
         if(my_arr==''){
               // generate new url to make new request
               make_request(url, other_params);
         }
    });

  });
}

connection.query('SELECT * from my_table', function(err, rows, fields){

  var len =rows.length;

  for(var i = 0; i < len; i++){

    var url = rows[i].url;

    make_request(url, other_params);

  }     
});

我尝试过将内部 make_request 包装在 setImmediatesetTimeout 以及其他一些技巧中,但似乎没有什么可以阻止调用堆栈错误。我可以添加任何可以完成这项工作的库。任何想法将不胜感激。

最佳答案

如果我正确地阅读了代码,则该 block

     if(my_arr==''){
           // generate new url to make new request
           function make_request(url, other_params);
     }

ma​​ke_request重新定义为空函数。您不想将其称为“此时”吗?我认为空重定义会给您带来无法终止的间接递归。

关于javascript - Node.js 超出最大调用堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38668642/

相关文章:

node.js - findAll 验证输入字段

javascript - 为什么我得到 'undefined is not a function' ?

php - 非基本案例如何在递归中工作?

java - 在java中制作LinkedList的深拷贝

validation - 有没有办法在 Mongoose 中定义没有 .save() 方法的模型?

python - Python 中的递归函数

javascript - sails.js 在创建之前修改模型

java - 有没有更好的方法来处理国家及其州/省/地区列表?

javascript - Jquery, 'invalid or unexpected token'。不是字符串问题

javascript - 如果数据绑定(bind)对象只有名称,那么 knockout 如何知道它?