Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Asynkronisten Operaatioiden Käsittely Promisien Avulla | Asynkroninen JavaScript ja API-integraatio
Edistynyt JavaScript-Osaaminen

bookAsynkronisten Operaatioiden Käsittely Promisien Avulla

Mikä on Promise?

Promise on tulevan arvon paikkamerkki, joka voi olla:

Promise alkaa tilassa pending ja asettuu pysyvästi joko tilaan fulfilled arvolla tai tilaan rejected syyn kanssa.

resolve-, reject- ja then()-metodien ymmärtäminen

Promisen luominen

Promisen luomiseksi annetaan funktio, jolla on kaksi parametria: resolve ja reject. Nämä parametrit ovat funktioita, joita käytetään osoittamaan, onko asynkroninen operaatio suoritettu onnistuneesti vai epäonnistunut.

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): Merkitsee Promisen täytetyksi (onnistuneeksi) ja välittää tuloksen (value);
  • reject(error): Merkitsee Promisen hylätyksi (epäonnistuneeksi) ja välittää virheen.

then()-metodin käyttö ratkaistujen Promisien käsittelyyn:

Kun Promise on luotu, tulosta voidaan käsitellä then()-metodilla. Tätä metodia kutsutaan, kun Promise täyttyy (ratkaistaan).

myPromise.then(result => {
  console.log(result); // Output: Task completed successfully!
});

Tässä esimerkissä then()-metodi vastaanottaa arvon, joka välitetään resolve()-funktiolle, ja suorittaa palautekutsun tuloksella. Se suoritetaan vain, jos Promise ratkaistaan onnistuneesti.

Virheenkäsittely .catch()-metodilla

Promiset tarjoavat yksinkertaisen tavan käsitellä virheitä .catch()-metodin avulla. Jos Promise hylätään (epäonnistuu), virhe otetaan kiinni ja käsitellään .catch()-lohkon sisällä.

1234567891011121314151617
const 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. });
copy

catch()-metodia käytetään virheiden käsittelyyn, kun Promise hylätään. Se sieppaa reject()-funktion välittämän virheen ja mahdollistaa epäonnistumistilanteiden hallinnan.

Promisejen ketjuttaminen peräkkäisiin asynkronisiin operaatioihin

Yksi Promisien tärkeimmistä eduista on mahdollisuus ketjuttaa niitä, mikä mahdollistaa useiden asynkronisten operaatioiden käsittelyn peräkkäin ilman callback-helvettiä. Jokainen then() palauttaa uuden Promisen, jolloin voit ketjuttaa useita then()-kutsuja peräkkäin, ja tulokset näytetään HTML:ssä sitä mukaa kun kukin Promise ratkeaa.

index.html

index.html

index.js

index.js

index.css

index.css

copy

Peräkkäiset toiminnot: Jokainen then() palauttaa uuden Promisen, siirtäen tuloksen yhdestä operaatiosta seuraavaan. Tämä mahdollistaa selkeän, lineaarisen asynkronisten toimintojen sarjan, joka päivittää näytettävän tekstin HTML:ssä.

Virheenkäsittely: .catch()-metodi käsittelee kaikki virheet, jotka ilmenevät minkä tahansa Promisen ratkaisun aikana. Tämä varmistaa, että virheet havaitaan ja näytetään sivulla riippumatta siitä, missä kohtaa ketjua ne tapahtuvat.

Miksi käyttää Promiseja?

  1. Callback-helvetin välttäminen: Promiset tarjoavat siistimmän ja helpommin luettavan tavan käsitellä asynkronisia operaatioita kuin syvästi sisäkkäiset callbackit;
  2. Virheenkäsittely: Promiset tarjoavat sisäänrakennetun virheenkäsittelyn .catch()-metodilla, mikä helpottaa hylättyjen operaatioiden käsittelyä;
  3. Peräkkäinen ketjutus: Promiset mahdollistavat useiden asynkronisten toimintojen suorittamisen peräkkäin ketjutuksen avulla, mikä tekee koodista helpommin seurattavaa ja ylläpidettävää.

1. Mikä on Promise?

2. Seuraavassa koodissa, mitä .catch() tekee, jos jokin virhe tapahtuu jossakin .then()-palautteessa?

question mark

Mikä on Promise?

Select the correct answer

question mark

Seuraavassa koodissa, mitä .catch() tekee, jos jokin virhe tapahtuu jossakin .then()-palautteessa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 2.22

bookAsynkronisten Operaatioiden Käsittely Promisien Avulla

Pyyhkäise näyttääksesi valikon

Mikä on Promise?

Promise on tulevan arvon paikkamerkki, joka voi olla:

Promise alkaa tilassa pending ja asettuu pysyvästi joko tilaan fulfilled arvolla tai tilaan rejected syyn kanssa.

resolve-, reject- ja then()-metodien ymmärtäminen

Promisen luominen

Promisen luomiseksi annetaan funktio, jolla on kaksi parametria: resolve ja reject. Nämä parametrit ovat funktioita, joita käytetään osoittamaan, onko asynkroninen operaatio suoritettu onnistuneesti vai epäonnistunut.

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): Merkitsee Promisen täytetyksi (onnistuneeksi) ja välittää tuloksen (value);
  • reject(error): Merkitsee Promisen hylätyksi (epäonnistuneeksi) ja välittää virheen.

then()-metodin käyttö ratkaistujen Promisien käsittelyyn:

Kun Promise on luotu, tulosta voidaan käsitellä then()-metodilla. Tätä metodia kutsutaan, kun Promise täyttyy (ratkaistaan).

myPromise.then(result => {
  console.log(result); // Output: Task completed successfully!
});

Tässä esimerkissä then()-metodi vastaanottaa arvon, joka välitetään resolve()-funktiolle, ja suorittaa palautekutsun tuloksella. Se suoritetaan vain, jos Promise ratkaistaan onnistuneesti.

Virheenkäsittely .catch()-metodilla

Promiset tarjoavat yksinkertaisen tavan käsitellä virheitä .catch()-metodin avulla. Jos Promise hylätään (epäonnistuu), virhe otetaan kiinni ja käsitellään .catch()-lohkon sisällä.

1234567891011121314151617
const 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. });
copy

catch()-metodia käytetään virheiden käsittelyyn, kun Promise hylätään. Se sieppaa reject()-funktion välittämän virheen ja mahdollistaa epäonnistumistilanteiden hallinnan.

Promisejen ketjuttaminen peräkkäisiin asynkronisiin operaatioihin

Yksi Promisien tärkeimmistä eduista on mahdollisuus ketjuttaa niitä, mikä mahdollistaa useiden asynkronisten operaatioiden käsittelyn peräkkäin ilman callback-helvettiä. Jokainen then() palauttaa uuden Promisen, jolloin voit ketjuttaa useita then()-kutsuja peräkkäin, ja tulokset näytetään HTML:ssä sitä mukaa kun kukin Promise ratkeaa.

index.html

index.html

index.js

index.js

index.css

index.css

copy

Peräkkäiset toiminnot: Jokainen then() palauttaa uuden Promisen, siirtäen tuloksen yhdestä operaatiosta seuraavaan. Tämä mahdollistaa selkeän, lineaarisen asynkronisten toimintojen sarjan, joka päivittää näytettävän tekstin HTML:ssä.

Virheenkäsittely: .catch()-metodi käsittelee kaikki virheet, jotka ilmenevät minkä tahansa Promisen ratkaisun aikana. Tämä varmistaa, että virheet havaitaan ja näytetään sivulla riippumatta siitä, missä kohtaa ketjua ne tapahtuvat.

Miksi käyttää Promiseja?

  1. Callback-helvetin välttäminen: Promiset tarjoavat siistimmän ja helpommin luettavan tavan käsitellä asynkronisia operaatioita kuin syvästi sisäkkäiset callbackit;
  2. Virheenkäsittely: Promiset tarjoavat sisäänrakennetun virheenkäsittelyn .catch()-metodilla, mikä helpottaa hylättyjen operaatioiden käsittelyä;
  3. Peräkkäinen ketjutus: Promiset mahdollistavat useiden asynkronisten toimintojen suorittamisen peräkkäin ketjutuksen avulla, mikä tekee koodista helpommin seurattavaa ja ylläpidettävää.

1. Mikä on Promise?

2. Seuraavassa koodissa, mitä .catch() tekee, jos jokin virhe tapahtuu jossakin .then()-palautteessa?

question mark

Mikä on Promise?

Select the correct answer

question mark

Seuraavassa koodissa, mitä .catch() tekee, jos jokin virhe tapahtuu jossakin .then()-palautteessa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3
some-alt