Ohjelmoinnin ja verkkokehityksen maailmassa aikakatkaisuongelmien käsittelyn tunteminen on välttämätöntä. Virheitä saattaa ilmaantua useista syistä, kuten verkon latenssista, palvelimen kuormituksesta jne. Aikakatkaisujen käsittelystrategiasta tulee ohjelman kestävyyden selkäranka.
Ymmärtääksemme aikakatkaisut paremmin, tarkastellaanpa auton moottorin tapausta. Jos käännät virta-avainta, odotat moottorin käynnistyvän alle muutamassa sekunnissa. Jos ei, voit odottaa vielä muutaman sekunnin ennen kuin sammutat sytytysvirran ja yrität käynnistää moottorin uudelleen. Tämä kynnysaika ennen kuin päätät lopettaa ja käynnistää uudelleen, on samankaltainen kuin ohjelmoinnin aikakatkaisut.
Typescript-ratkaisu
Typescript, staattisesti kirjoitettu JavaScriptin superjoukko, antaa kehittäjille työkalut, joita tarvitaan aikakatkaisujen tehokkaaseen käsittelyyn. Aikakatkaisun hallitsemiseksi luomme lupauksen, joka joko ratkaistaan onnistuneesti määritetyn aikarajan kuluessa tai hylätään, jos se ylittyy. Tässä on esimerkki:
function timeout(ms: number, promise: Promise<any>): Promise<any> {
return new Promise(function(resolve, reject) {
setTimeout(function() {
reject('Timed out in '+ ms + 'ms.');
}, ms);
promise.then(resolve);
});
}
Koodin ymmärtäminen
Kehittäjien on usein helpompi ymmärtää ongelmat, kun ratkaisu jaetaan pienempiin hallittaviin osiin.
Kohta 1: Ensin luodaan funktio nimeltä "timeout", joka hyväksyy parametreiksi "ms" ja "promise". "ms" on aikakatkaisuraja millisekunteina, ja "lupaus" on alkuperäinen lupaus, jonka yritämme toteuttaa.
function timeout(ms: number, promise: Promise<any>)
Kohta 2: Aikakatkaisu-funktiossa palautetaan uusi lupaus "resolve"- ja "reject"-parametreilla.
return new Promise(function(resolve, reject)
Kohta 3: Käytämme setTimeoutia laukaisemaan "hylkäämisen", jos rajamme (ms) saavutetaan ennen kuin lupaus on ratkaistu.
setTimeout(function() {
reject('Timed out in '+ ms + 'ms.');
}, ms);
Kohta 4: Jos alkuperäinen lupaus ratkeaa ennen ms, välitämme ratkaisun yhdessä "promise.then(resolve)" kanssa.
promise.then(resolve);
Siten pakottamalla aikakatkaisun voimme varmistaa, että koodimme ei odota loputtomasti vastausta.
Aiheeseen liittyvät kirjastot ja toiminnot
Typescriptissä ei ole valmiiksi rakennettua kirjastoa aikakatkaisujen hallintaa varten. Se on kuitenkin kätevä, koska sillä on läheinen suhde JavaScriptiin ja laaja npm-moduulien ekosysteemi. Jotkut asiaan liittyvät JavaScript-toiminnot ovat:
- SetTimeout(): Tämä on toiminto, osa Window Timing Events -toimintoa, joka keskeyttää koodin suorittamisen tietyksi ajaksi ja suorittaa sitten koodin.
- ClearTimeout(): Tämä toiminto pysäyttää sen koodin suorittamisen, jota setTimeout()-funktio on viivästynyt.
- AsetaInterval(): Samanlainen kuin setTimeout() funktiossa, mutta sen sijaan, että se suorittaisi koodin kerran tietyn ajan kuluttua, setInterval() suorittaa koodin toistuvasti tietyn ajanjakson jälkeen, kunnes ClearInterval() kutsutaan.
- ClearInterval(): Tätä toimintoa käytetään pysäyttämään setInterval():lla asetetun koodin suorittaminen.
Typescript-koodin aikakatkaisujen sulavan käsittelyn teho on valtava. Vaikkakin suhteellisen yksinkertaista, asianmukaisten aikakatkaisumenetelmien ymmärtäminen ja käyttäminen ei ainoastaan takaa sujuvaa käyttökokemusta, vaan myös parantaa ohjelman tehokkuutta ja ammattimaisuutta.