Page 1 of 1

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
by Guest
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.

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
Hier ist ein Link zu einem Runnable, der den Fehler reproduziert.