zurückzukehren Ich benutze JSZip, um ein Verzeichnis zu entpacken, die async läuft. Ich möchte eine Funktion schreiben, die eine Datei entpackt und gibt die Dateien mit ihm verbunden, wie folgt aus:Refactoring Versprechen, von Funktion
function unzipFile(filename){
const zipper = new jsZip()
return fs.readFile(filename, function(err, data) {
return jsZip.loadAsync(data).then(function(zip) {
return zip.files
})
})
}
aber dies ist nur zurück undefined
. Wie kann ich das async so machen, dass es das entpackte Verzeichnis in einer einzigen Funktion zurückgibt, und wenn ich eine Variable gleich ihrer Ausgabe setzen wollte, würde sie auf ihren Abschluss warten?
weil in einem normalen Rückruf Rückkehr (die man auch nicht tun) hat no effect –
du verwendest nicht einmal 'zipper' - also, die grundlagen sind sowieso falsch –
Es ist nicht möglich. Lernen Sie sich mit Rückrufen vertraut zu machen. Sie können async/await-Schlüsselwörter als Syntax-Zucker verwenden, um es so aussehen zu lassen, als würden Sie Werte zurückgeben, aber auf einer bestimmten Ebene gibt eine asynchrone Funktion immer noch ein Versprechen zurück, so dass Sie irgendwann mit Rückrufen arbeiten müssen. Ich persönlich empfehle dringend, dass Leute async nicht verwenden/warten, bis sie Rückrufe und Versprechen verstehen. – slebetman