Lahendatud: timeout

Programmeerimise ja veebiarenduse maailmas on oluline teada, kuidas aegumisprobleeme käsitleda. Vead võivad ilmneda erinevatel põhjustel, nagu võrgu latentsusaeg, serveri koormus jne. Aegumiste käsitlemise strateegiast saab programmi töökindluse selgroog.

Ajalõppude paremaks mõistmiseks vaatleme auto mootori juhtumit. Kui keerate süütevõtit, siis eeldate, et mootor hakkab tööle vähem kui mõne sekundiga. Kui seda ei juhtu, võite oodata veel paar sekundit, enne kui süüte välja lülitate ja proovite mootorit uuesti käivitada. See läviaeg enne peatamise ja taaskäivitamise otsustamist on sarnane programmeerimismaailma ajalõppudega.

Typescripti lahendus

Typescript, staatiliselt trükitud JavaScripti superkomplekt, annab arendajatele ajalõppude tõhusaks käsitlemiseks vajalikud tööriistad. Ajalõpu haldamiseks loome lubaduse, mis kas lahendatakse edukalt määratud tähtaja jooksul või lükatakse tagasi, kui see ületab. Siin on näide:

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);
    });
}

Koodeksi mõistmine

Arendajatel on sageli lihtsam probleemidest aru saada, kui lahendus on jagatud väiksemateks hallatavateks osadeks.

Punkt 1: Esiteks loome funktsiooni nimega "timeout", mis aktsepteerib parameetritena "ms" ja "promise". "ms" on ajalõpu piirang millisekundites ja "lubadus" on algne lubadus, mida proovime täita.

function timeout(ms: number, promise: Promise<any>)

Punkt 2. Funktsiooni 'timeout' raames tagastame uue lubaduse parameetritega "lahendada" ja "lükake tagasi".

return new Promise(function(resolve, reject)

Punkt 3. Kasutame setTimeouti, et käivitada tagasilükkamine, kui meie limiit (ms) saavutatakse enne lubaduse täitmist.

setTimeout(function() {
            reject('Timed out in '+ ms + 'ms.');
        }, ms);

Punkt 4: kui esialgne lubadus laheneb enne ms-i, edastame resolutsiooni koos tekstiga "promise.then(resolve)"

promise.then(resolve);

Seega saame ajalõpu jõustamisel tagada, et meie kood ei ootaks vastust lõputult.

Seotud raamatukogud ja funktsioonid

Typescriptil ei ole ajalõpu haldamiseks ette ehitatud teeki. Siiski on see mugav tänu tihedale seosele JavaScriptiga ja suurele npm-moodulite ökosüsteemile. Mõned seotud JavaScripti funktsioonid on järgmised:

  • Settimeout(): See on funktsioon, mis on osa akna ajastuse sündmustest, mis peatab koodi täitmise teatud ajaks ja seejärel käivitab koodi.
  • ClearTimeout(): See funktsioon peatab funktsiooni setTimeout() poolt viivitatud koodi täitmise.
  • SetInterval(): Sarnaselt funktsiooniga setTimeout(), kuid selle asemel, et teatud aja möödudes koodi käivitada, käivitab setInterval() koodi korduvalt pärast määratud ajavahemikku, kuni välja kutsutakse funktsioon clearInterval().
  • ClearInterval(): Seda funktsiooni kasutatakse setInterval() poolt määratud koodi käivitamise peatamiseks.

Typescripti koodis ajalõppude graatsiliselt käsitlemise võimsus on tohutu. Kuigi see on suhteliselt lihtne, ei taga asjakohaste aegumismeetodite mõistmine ja kasutamine mitte ainult sujuva kasutuskogemuse, vaid suurendab ka teie programmi tõhusust ja professionaalsust.

Seonduvad postitused:

Jäta kommentaar