Håndtering af Asynkrone Operationer med Promises
Hvad er et Promise?
Et Promise er en pladsholder for en fremtidig værdi, som kan være:
Et promise starter som pending og afsluttes permanent som enten fulfilled med en værdi eller rejected med en årsag.
Forståelse af resolve-, reject- og then()-metoderne
Oprettelse af et Promise
For at oprette et Promise skal du videregive en funktion med to parametre: resolve og reject. Disse parametre er funktioner, der bruges til at angive, om den asynkrone operation er gennemført med succes eller fejlet.
const myPromise = new Promise((resolve, reject) => {
const success = true; // Simulate whether the task is successful
if (success) {
resolve('Task completed successfully!');
} else {
reject('Task failed.');
}
});
resolve(value): Marker Promise som opfyldt (succesfuld) og videregiver resultatet (value);reject(error): Marker Promise som afvist (fejlet) og videregiver fejlen.
Brug af then() til at håndtere opfyldte Promises:
Når et Promise er oprettet, kan du håndtere resultatet ved hjælp af then()-metoden. Denne metode kaldes, når Promise er opfyldt (resolved).
myPromise.then(result => {
console.log(result); // Output: Task completed successfully!
});
I dette eksempel modtager then()-metoden værdien, der sendes til resolve(), og udfører callback-funktionen med resultatet. Den kører kun, hvis Promisen bliver løst succesfuldt.
Fejlhåndtering med .catch()
Promises tilbyder en enkel metode til fejlhåndtering gennem .catch()-metoden. Hvis en Promise bliver afvist (fejler), opfanges og håndteres fejlen i .catch().
1234567891011121314151617const myPromise = new Promise((resolve, reject) => { const success = false; // Simulate a failure if (success) { resolve('Task completed successfully!'); } else { reject('Task failed.'); } }); myPromise .then(result => { console.log(result); }) .catch(error => { console.error('Error:', error); // Output: Error: Task failed. });
catch()-metoden bruges til at håndtere fejl, når Promise afvises. Den opfanger fejlen, der sendes med reject(), og giver dig mulighed for at håndtere fejlsituationer.
Kædning af Promises til sekventielle asynkrone operationer
En af de vigtigste fordele ved Promises er muligheden for at kæde dem sammen, hvilket gør det muligt at håndtere flere asynkrone operationer i rækkefølge uden at ende i callback-helvede. Hver then() returnerer et nyt Promise, hvilket gør det muligt at kæde flere then()-kald i en sekvens, hvor resultaterne vises i HTML'en, efterhånden som hver Promise opfyldes.
index.html
index.js
index.css
Sekventielle operationer: Hver then() returnerer et nyt Promise, der videregiver resultatet fra én operation til den næste. Dette muliggør en ren, lineær sekvens af asynkrone operationer, som opdaterer den viste tekst i HTML.
Fejlhåndtering: Metoden .catch() håndterer enhver fejl, der opstår under nogen af Promise-afgørelserne. Dette sikrer, at fejl opfanges og vises på siden, uanset hvor de opstår i kæden.
Hvorfor bruge Promises?
- Undgåelse af callback-helvede: Promises tilbyder en mere overskuelig og læsbar måde at håndtere asynkrone operationer på end dybt indlejrede callbacks;
- Fejlhåndtering: Promises har indbygget fejlhåndtering med
.catch(), hvilket gør det nemt at håndtere afviste operationer; - Sekventiel kædning: Promises gør det muligt at køre flere asynkrone operationer i rækkefølge ved hjælp af kædning, hvilket gør koden lettere at følge og vedligeholde.
1. Hvad er et Promise?
2. I den følgende kode, hvad vil .catch() gøre, hvis der opstår en fejl i en af .then()-tilbagekaldsfunktionerne?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
What are some real-world examples of using Promises in JavaScript?
Can you explain the difference between callbacks and Promises?
How do you chain multiple Promises together?
Awesome!
Completion rate improved to 2.22
Håndtering af Asynkrone Operationer med Promises
Stryg for at vise menuen
Hvad er et Promise?
Et Promise er en pladsholder for en fremtidig værdi, som kan være:
Et promise starter som pending og afsluttes permanent som enten fulfilled med en værdi eller rejected med en årsag.
Forståelse af resolve-, reject- og then()-metoderne
Oprettelse af et Promise
For at oprette et Promise skal du videregive en funktion med to parametre: resolve og reject. Disse parametre er funktioner, der bruges til at angive, om den asynkrone operation er gennemført med succes eller fejlet.
const myPromise = new Promise((resolve, reject) => {
const success = true; // Simulate whether the task is successful
if (success) {
resolve('Task completed successfully!');
} else {
reject('Task failed.');
}
});
resolve(value): Marker Promise som opfyldt (succesfuld) og videregiver resultatet (value);reject(error): Marker Promise som afvist (fejlet) og videregiver fejlen.
Brug af then() til at håndtere opfyldte Promises:
Når et Promise er oprettet, kan du håndtere resultatet ved hjælp af then()-metoden. Denne metode kaldes, når Promise er opfyldt (resolved).
myPromise.then(result => {
console.log(result); // Output: Task completed successfully!
});
I dette eksempel modtager then()-metoden værdien, der sendes til resolve(), og udfører callback-funktionen med resultatet. Den kører kun, hvis Promisen bliver løst succesfuldt.
Fejlhåndtering med .catch()
Promises tilbyder en enkel metode til fejlhåndtering gennem .catch()-metoden. Hvis en Promise bliver afvist (fejler), opfanges og håndteres fejlen i .catch().
1234567891011121314151617const myPromise = new Promise((resolve, reject) => { const success = false; // Simulate a failure if (success) { resolve('Task completed successfully!'); } else { reject('Task failed.'); } }); myPromise .then(result => { console.log(result); }) .catch(error => { console.error('Error:', error); // Output: Error: Task failed. });
catch()-metoden bruges til at håndtere fejl, når Promise afvises. Den opfanger fejlen, der sendes med reject(), og giver dig mulighed for at håndtere fejlsituationer.
Kædning af Promises til sekventielle asynkrone operationer
En af de vigtigste fordele ved Promises er muligheden for at kæde dem sammen, hvilket gør det muligt at håndtere flere asynkrone operationer i rækkefølge uden at ende i callback-helvede. Hver then() returnerer et nyt Promise, hvilket gør det muligt at kæde flere then()-kald i en sekvens, hvor resultaterne vises i HTML'en, efterhånden som hver Promise opfyldes.
index.html
index.js
index.css
Sekventielle operationer: Hver then() returnerer et nyt Promise, der videregiver resultatet fra én operation til den næste. Dette muliggør en ren, lineær sekvens af asynkrone operationer, som opdaterer den viste tekst i HTML.
Fejlhåndtering: Metoden .catch() håndterer enhver fejl, der opstår under nogen af Promise-afgørelserne. Dette sikrer, at fejl opfanges og vises på siden, uanset hvor de opstår i kæden.
Hvorfor bruge Promises?
- Undgåelse af callback-helvede: Promises tilbyder en mere overskuelig og læsbar måde at håndtere asynkrone operationer på end dybt indlejrede callbacks;
- Fejlhåndtering: Promises har indbygget fejlhåndtering med
.catch(), hvilket gør det nemt at håndtere afviste operationer; - Sekventiel kædning: Promises gør det muligt at køre flere asynkrone operationer i rækkefølge ved hjælp af kædning, hvilket gør koden lettere at følge og vedligeholde.
1. Hvad er et Promise?
2. I den følgende kode, hvad vil .catch() gøre, hvis der opstår en fejl i en af .then()-tilbagekaldsfunktionerne?
Tak for dine kommentarer!