Was ist die Ursache für diesen asynchronen Fehler und warum wird er mit einer blockierten Scoped Const Variablen behoben
Posted: 09 Feb 2025, 12:49
Ich habe das asynchrone Programmierkapitel von eloquentem JavaScript durchlesen und bin auf dieses asynchrische Fehlerproblem gestoßen. Die hier angebotene Lösung bestand darin, am Ende ein .join () zu machen, aber ich stieß auf eine andere Lösung, indem ich eine blockierte Scoped Const verwendete. Das Problem ist, dass ich nicht herausfinden kann, warum er den Fehler behebt. Wenn jemand eine Erklärung anbieten könnte, wäre dies sehr geschätzt.
Hier ist ein Link zu einem Runnable, der den Fehler reproduziert.
Code: Select all
const resolveName = (fruitname) => {
return new Promise((resolve) => {
resolve(fruitname);
});
};
async function countLetters(fruitList) {
let result = "";
await Promise.all(
fruitList.map(async (fruit) => {
result += fruit + ": " + (await resolveName(fruit)).length + "\n";
// Fix: storing the string into a variable fixes this.
// const s = fruit + ": " + (await resolveName(fruit)).length + "\n";
// result += s;
})
);
return result;
}
const arr = ["apple", "banana", "cherry"];
const p = countLetters(arr);
p.then((r) => console.log(r));< /code>
< /div>
< /div>
< /p>
Ich habe versucht, so nach einer Lösung zu debuggen und zu durchsuchen. Die erwartete und tatsächliche Ausgabe ist wie unten: < /p>
Erwartet:
apple: 5 banana: 6 cherry: 6 < /code> < /p>
tatsächlich:
cherry: 6