Betrachten Sie diese Code-Schnipsel, in dem eine Funktion b
ein Versprechen bekommt und nennt sich, wenn es um aufgelöst wird ein weiteres Versprechen zu bekommen:leidet ein rekursives Versprechen Speicherverlust?
var a = function() {
var timeout = 1000;
let time_promise = new Promise((resolve, reject) => {
let success = false;
setTimeout(()=> {
document.getElementById('log').appendChild(document.createTextNode("Called "));
resolve();
}, timeout);
});
return time_promise;
};
var b = function() {
a().then(()=>{
//is the first b() released after this call?
b();
});
};
b();
meine Frage ist: ist der erste Aufruf freigegeben b nachdem es sich selbst genannt hat? Beachten Sie, dass sich der Aufruf an sich selbst in einer Funktion befindet, die aufgerufen wird, wenn then
aufgerufen werden muss.
Es wird nach einem '()' Anruf freigegeben. https://jsfiddle.net/L62pjzq0/2/ –
Anruflisten werden für geplante Funktionen nicht beibehalten. Vielleicht möchten Sie lesen https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop –
Mögliche Duplikate von [Erstellen einer Versprechenskette rekursiv in Javascript - Speicher Überlegungen] (http://stackoverflow.com/) Fragen/29925948/Gebäude-ein-Versprechen-Kette-rekursiv-in-Javascript-Speicher-Überlegungen) –