⊗jsSpPrmAr 170 of 294 menu

Promise-taulukoiden käsittely JavaScriptissä

Nyt käymme läpi kaksi hyödyllistä menetelmää, joiden avulla voidaan työskennellä promise-taulukoiden kanssa. Menetelmä Promise.all mahdollistaa koodin suorittamisen kaikkien taulukkoon välitettyjen promisejen päätyttyä, kun taas menetelmä Promise.race odottaa taulukon ensimmäisen promiseen latautumista, hyläten loput.

Molemmat menetelmät palauttavat tuloksenaan uuden promisen. Menetelmän Promise.all tapauksessa tämän promisen tulos on taulukko, joka sisältää kaikkien välitettyjen promisejen tulokset (tulosten järjestys vastaa promisejen järjestystä taulukossa), kun taas Promise.race palauttaa ensimmäisen valmistuneen promisen tuloksen.

Katsotaanpa käytännössä. Oletetaan, että meillä on promise-taulukko:

let promises = [ new Promise(resolve => setTimeout(() => resolve(1), 1000)), new Promise(resolve => setTimeout(() => resolve(2), 2000)), new Promise(resolve => setTimeout(() => resolve(3), 3000)), ];

Odottakaamme Promise.all:n avulla kaikkien taulukkomme promisejen latautumisen päättymistä:

Promise.all(promises).then(function(res) { console.log(res); // tulostaa [1, 2, 3] - kaikkien promisejen tulokset });

Ja nyt odotetaan Promise.race:n avulla ensimmäisen promisen latautumisen päättymistä:

Promise.race(promises).then(function(res) { console.log(res); // tulostaa 1 - ensimmäisen valmistuneen promisen tulos });

Jos vähintään yksi taulukon promiseista hylätään, promisen tulos siirtyy välittömästi tilaan rejected. Siksi ilmaantuneen poikkeuksen voi siepata tavallisella, jo opitsellasi tavalla, esimerkiksi catch:in avulla:

Promise.all(promises).then(function(res) { console.log(res); }).catch(function(err) { console.log(err); });

Tee funktio, joka palauttaa promisen, jonka sisällä on satunnainen viive 1:stä 10:een sekuntiin. Palauttakoon promisen tuloksena tämä viive. Täytä silmukkaa ja funktiotasi käyttäen taulukko 10:llä promisella.

Käytä edellisen tehtävän promise-taulukkoa tehdäksesi niin, että konsoliin tulostuu ensimmäisen toimineen promisen tulos.

Käytä edellisen tehtävän promise-taulukkoa tehdäksesi niin, että konsoliin tulostuu kaikkien promisejen tulosten summa.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää