Ich habe die same question as earlier aber Probleme mit der Beantwortung der Antworten auf meinen Code. Hier ist mein Fehler: RangeError: Maximum call stack size exceeded
.Node.js maximale Call-Stack überschritten
Die stark vereinfachte Pseudo Version meines Code ist dies:
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);
}
});
Ich habe versucht, die internen make_request
in setImmediate
oder setTimeout
unter einigen anderen Hacks Einwickeln, aber nichts scheint die Call-Stack-Fehler zu verhindern. Ich kann jede Bibliothek hinzufügen, die das funktioniert. Irgendwelche Gedanken würden geschätzt werden.
Es gibt zu viel Pseudocode hier, um zu sehen, was wirklich los ist. Wir müssen den REAL-Code sehen. Wie Sie den Code in Ihrer Frage haben, tut es kaum etwas, weil 'if (my_arr == '')' wird nie wahr, so macht der Code ein paar DB-Abfragen und macht nie etwas mit den Ergebnissen. Hier ist nichts zu sehen. Ich glaube nicht, dass dieser Code Ihren Fehler erzeugen würde. Es gibt mehr, als Sie hier zeigen. – jfriend00
Jfriend00 my_arr == '' wird in 50% der Fälle wahr. Ist das hilfreich? –
Mein Code ist sehr lang, aber es ist im Grunde eine Funktion, die eine HTTP-Anfrage beinhaltet, die oft in sich selbst aufgerufen wird. Gibt es dafür keine verallgemeinerbare Lösung? –