我有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
包装在 setImmediate
或 setTimeout
以及其他一些技巧中,但似乎没有什么可以阻止调用堆栈错误。我可以添加任何可以完成这项工作的库。任何想法将不胜感激。
最佳答案
如果我正确地阅读了代码,则该 block
if(my_arr==''){
// generate new url to make new request
function make_request(url, other_params);
}
将make_request重新定义为空函数。您不想将其称为“此时”吗?我认为空重定义会给您带来无法终止的间接递归。
关于javascript - Node.js 超出最大调用堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38668642/