Ich habe ein Array B enthält Worte wie dieseJavaScript Umfang pitfall mit Versprechen
B = [ 'hallo', 'Liebe', 'Frieden']
ich ein Versprechen Array P zu schaffen versuchen:
for(var i = 0; i<B.length; i++){
var line = B[i];
var p = new Promise(function(resolve, reject){
setTimeout(function(){
resolve(line)},2000
);
})
P.push(p);
}
Promise.all(P).then(function(data){
console.log('data',data);
})
ich erwarte, dass Array Daten werden gleich [ 'Hallo', 'Liebe', 'Frieden'], aber eigentlich daten = ['frieden', 'frieden', 'frieden']
Ich habe ein paar Beiträge über JavaScript Bereich Fallstricke gelesen, kann aber immer noch nicht herausfinden, wie ich meinen Code beheben kann.
Bitte helfen Sie mir. Vielen Dank im Voraus
So haben Sie eine sehr ruhige Versprechen. Witze beiseite, abgesehen davon, dass du 'let' benutzt, solltest du' line' wirklich in den 'Promise'-Executor-Bereich verschieben, wie es Timosta empfohlen hat. Sie brauchen hier keine Schließung, weil 'line' nur eine Hilfsvariable ist, die nicht im übergeordneten Bereich vorhanden sein muss. – ftor