Ich habe Probleme beim Erweitern einer Promise
innerhalb einer . Ich versuche DB-Updates in einer for-Schleife durchzuführen und schließe dann die Datenbank, nachdem alle Datensätze verarbeitet wurden. Die Anwendung wird jedoch sofort mit process.exit()
beendet, was bedeutet, dass process.exit()
ausgeführt wurde, noch bevor alle Datenbankaktualisierungen abgeschlossen wurden. Ich bin mir ziemlich sicher, dass ich mit dem verschachtelten Versprechen etwas falsch mache.Geschachteltes Versprechen in einer for-Schleife, die sich nicht wie erwartet verhält
var myDB;
function doSomething() {
return MongoClient.connect(DB_CONNECTION).then(function(db) {
myDB = db;
var collection = db.collection(COLLETION_NAME);
for (var i = 0; i < 10; i++) {
promise.then(function{
collection.update({
symbol: items[i].symbol
}, {
$set: {
value: 123
}
}, {
upsert: true
});
});
}
})
}
var promise = doSomething();
promise.then(function(){
console.log("DONE");
myDB.close();
process.exit();
});
Nun ist die Funktion' Funktion doSomething (Versprechen) 'und Sie‘ re nennen es wie 'var promise = doSomething()', ohne irgendein Versprechen zu bestehen. Eine andere Sache ist, dass innerhalb Ihrer db Callback 'Funktion (db)' Sie ** keine Versprechen ** noch irgendeine Art von Ergebnis, daher kann es nicht verkettet werden. –
['Promise.all'] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise/all) – Rayon
@AndreyPopov danke für den Kommentar. Ich verstehe, dass ich etwas falsch mache, das Problem ist, dass ich Probleme habe, es zu beheben. Wie ändere ich es, um ein Versprechen innerhalb einer for-Schleife zurückzugeben? –