In meiner Node.js-Anwendung habe ich eine Funktion, die eine Reihe von URLs durchläuft und ihre Werte abruft. Sobald die Schleife abgeschlossen ist, wird der endgültige Wert als Map zurückgegeben. Code folgt.Warten auf das Versprechen der Funktion in JavaScript
let getResults = function(urls){
let results = new Map();
let retrievePromises = [];
urls.forEach(function (value, i) {
retrievePromises.push(
restAgent.get(value).then(function(data){
for (let item of data.items) {
let name = item.filter(n => n.name === "somename"); //filter array
let obj = {};
obj.name = item.name;
obj.address = item.address;
results.set(name, obj);
}
}).catch(function(err){
console.log(err);
})
);
});
Promise.all(retrievePromises).then(function(){
return this.results;
});
}
Wenn dann laufe ich, wird es console.log(getResults());
zurückkehren undefined
wie vor die Funktion zurückkehrt Ergebnisse ausgelöst wird. Wie man dieses Problem zu lösen, und seit ich neu zu Promises bin, irgendwelche möglichen Verbesserungen des Codes? (Ich weiß, dass forEach ist nicht günstig)
Auch zu verwenden hat 'dann()', wenn Aufruf dieser Funktion – charlietfl
Dank tun müssen, um zu sehen @charlietfl ich es auf meine Antwort gegeben. – Stamos
Da dies als richtig ausgewählt wurde, nehme ich an, dass es funktioniert. Ich war mir nicht sicher, worauf das in diesen Ergebnissen hindeutet. Ich dachte, es würde auf die Funktion in der dann in Promise zeigen. – UchihaItachi