Asynkronisuus JavaScriptissä
Hartiala, Henrik (2018)
Hartiala, Henrik
2018
Tietotekniikka
Tieto- ja sähkötekniikan tiedekunta - Faculty of Computing and Electrical Engineering
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2018-09-05
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201808212174
https://urn.fi/URN:NBN:fi:tty-201808212174
Tiivistelmä
Tässä työssä käydään läpi web-kehityksen historian vaiheita synkronisista HTML-sivuista kohti asynkronista ohjelmointia. Asynkronisen web-ohjelmoinnin johdosta käyttäjän ei tarvitse odottaa toimeettomana esimerkiksi datahakua palvelimelta, vaan voi käyttää sovellusta samanaikaisesti. Työssä tarkastellaan eri tapoja toteuttaa asykronisuutta JavaScriptissä, näiden tapojen kehitysvaiheet, sekä niiden mukanaan tuomat ongelmat ja ratkaisut. Työ keskittyy eri toteutustapojen luettavuuteen, ymmärrettävyyteen ja muokattavuuteen. Lisäksi työssä käydään vielä läpi virheiden käsittelyä näissä toteutustavoissa.
Työssä toteutetaan sama demo-ohjelma kolmella eri asynkronisella tavalla JavaScriptissä ja vertaillaan näiden luettavuutta, muokattavuutta ja virheiden käsittelyä. Tämän lisäksi pureudutaan vielä async/await:in mukanaan tuomiin ongelmiin toisella demo-ohjelmalla.
Työssä todetaan, että asynkronisuuden toteutus callback-metodin avulla JavaScriptissä muuttuu erittäin vaikealukuiseksi ja vaikeasti muokattavaksi ohjelman monimutkaistuessa, sillä se ajaa koodin rakenteen pyramidimaiseksi sisäkkäisyydeksi. Tähän ongelmaan kehitetty promise toimii erinomaisena ratkaisuna lohkojakonsa ja ketjutettavuutensa ansiosta. Promisen lisäksi kehitetty async/await-metodi tuo vielä keinon kirjoittaa promise-pohjaista asynkronista koodia ikään kuin se olisi synkronista, mutta työssä todetaankin, että tämän metodin kanssa täytyy olla tarkka missä ja miten sitä käytetään. Väärin käytettynä metodi vain hidastaa koodin suoritusta.
Työssä toteutetaan sama demo-ohjelma kolmella eri asynkronisella tavalla JavaScriptissä ja vertaillaan näiden luettavuutta, muokattavuutta ja virheiden käsittelyä. Tämän lisäksi pureudutaan vielä async/await:in mukanaan tuomiin ongelmiin toisella demo-ohjelmalla.
Työssä todetaan, että asynkronisuuden toteutus callback-metodin avulla JavaScriptissä muuttuu erittäin vaikealukuiseksi ja vaikeasti muokattavaksi ohjelman monimutkaistuessa, sillä se ajaa koodin rakenteen pyramidimaiseksi sisäkkäisyydeksi. Tähän ongelmaan kehitetty promise toimii erinomaisena ratkaisuna lohkojakonsa ja ketjutettavuutensa ansiosta. Promisen lisäksi kehitetty async/await-metodi tuo vielä keinon kirjoittaa promise-pohjaista asynkronista koodia ikään kuin se olisi synkronista, mutta työssä todetaankin, että tämän metodin kanssa täytyy olla tarkka missä ja miten sitä käytetään. Väärin käytettynä metodi vain hidastaa koodin suoritusta.
Kokoelmat
- Kandidaatintutkielmat [8935]