Asinchroninis programavimas yra pagrindinė programinės įrangos kūrimo dalis. Sunku patikėti, kad ši programavimo koncepcija gyvuoja tik nuo dvidešimt pirmojo amžiaus. 2007 m. F# programavimo kalba pirmoji iš savo kolegų pristatė asinchroninį programavimą.

Kitos kalbos, tokios kaip C#, Python, JavaScript ir C++, palaipsniui pridėjo asinchroninio programavimo palaikymą. Didelis klausimas yra, kokią vertę asinchroninis programavimas suteikia jūsų programoms?

Šiame straipsnyje pateikiami atsakymai į šį ir kitus klausimus, todėl sužinosite viską, kaip naudoti asinchroninį programavimą.

Kas yra sinchroninis programavimas?

Sinchroninis programavimas reiškia pačią paprasčiausią programą. Šis programavimo modelis nuosekliai apdoroja programos ar scenarijaus kodo eilutes. Jis visada prasideda nuo pirmosios programos kodo eilutės. Tada jis laukia, kol kiekviena kodo eilutė baigs vykdyti, prieš pereidama prie kitos.

Sinchroninis modelis taip pat apima sąlyginį kodą, pvz jeigu ir kol pareiškimus. Nors bus vykdomas tik tam tikras sąlyginio sakinio kodas, programa vis tiek veiks nuosekliai.

instagram viewer

Sinchroninės programos pavyzdys

const SyncCode = () => {
console.log ("Tai pirmoji eilutė programoje")
console.log ("Tai antra programos eilutė")
console.log ("Tai paskutinė programos eilutė")
}

SyncCode ();

Paleidus aukščiau pateiktą „JavaScript“ programą, konsolėje bus pateikta tokia išvestis:

Tai pirmoji programos eilutė
Tai antroji programos eilutė
Tai paskutinė programos eilutė

Aukščiau pateikta produkcija yra būtent tai, ko turėtumėte tikėtis. Programa pradedama nuo viršaus ir laukia, kol baigsis viena kodo eilutė, prieš pereinant prie kitos.

Kas yra asinchroninis programavimas?

Asinchroninis programavimas yra priešingas sinchroniniam programavimui. Asinchroninio programavimo modelis vienu metu apdoroja kelias kodų eilutes. Jis nelaukia, kol ankstesnė programos kodo eilutė baigs vykdyti, prieš pereidama prie kitos.

Susijęs: Sinchroninis vs. Asinchroninis programavimas: kuo jie skiriasi?

Asinchroninis programavimas gali sutrumpinti vykdymo laiką per pusę ir efektyviai sukurti greitesnius kompiuterius.

Asinchroninės programos pavyzdys

const AsyncCode = () => {
console.log ("Tai pirmoji eilutė programoje")
setTimeout(() => {
console.log ("Tai antra programos eilutė")
}, 3000)
console.log ("Tai paskutinė programos eilutė")
}

AsyncCode ();

Vykdydami aukščiau pateiktą „JavaScript“ kodą, jūsų konsolėje bus pateikta tokia išvestis:

Tai pirmoji programos eilutė
Tai paskutinė programos eilutė
Tai antroji programos eilutė

Jei palyginsite aukščiau pateiktą konsolės išvestį su ją generuojančia asinchronine programa, pamatysite, kad yra akivaizdus neatitikimas. Skambutis į žurnalas „Tai yra antroji programos eilutė“ yra prieš tą, kuri sako: „Tai paskutinė programos eilutė“. Tačiau konsolės išvestis to neatspindi.

Atsižvelgiant į tai, kad „JavaScript“ pirmiausia yra sinchroninis, anksčiau pateiktos programos kodas buvo vykdomas nuosekliai. Tačiau „JavaScript“ palaiko asinchroninį programavimą per tokias funkcijas kaip setTimeout() metodas.

The setTimeout() Metodas yra asinchroninis JavaScript metodas, kuriam naudojami du argumentai: funkcija ir delsa. Uždelsimas yra laikmatis (milisekundėmis), kuris atitolina funkcijos vykdymą. Taigi, kol aukščiau pateikta programa laukia trijų sekundžių, kad atliktų funkciją setTimeout() metodu, jis pereina į kitą kodo eilutę. Dėl to trečiasis funkcijos iškvietimas vykdomas prieš antrąjį.

Asinchroninės JavaScript technologijos

Be to setTimeout() minėtą metodą, kelios JavaScript technologijos naudoja asinchroninį programavimą. Šios technologijos naudoja asinchroninio programavimo modelį, kad sukurtų greitesnes neblokuojančias programas. Kai kurios iš šių technologijų apima:

  • jQuery Ajax
  • Axios
  • NodeJS

Susijęs: Kas yra Node.js? Štai kaip naudoti serverio JavaScript

Asinchroninių programų kūrimas naudojant „JavaScript“.

Yra keletas būdų, kaip tvarkyti asinchroninį kodą. Pasirinktas metodas turėtų priklausyti nuo programos, kurią norite sukurti, tipo. Šie metodai apima skambinimo funkcijas, pažadus ir asinchronizavimą / laukimą.

Atšaukimo funkcijos

Yra dvi svarbios atgalinio ryšio funkcijos savybės. Jie tarnauja kaip kitų funkcijų parametrai ir, vykdydami savo pareigas, remiasi išoriniais įvykiais. The setTimeout() Aukščiau pateiktame asinchroniniame pavyzdyje naudojamas metodas yra atgalinio skambinimo funkcija. Programa perduoda jai žurnalo funkciją kaip parametrą (atskambinimo funkcija) ir paleidžia ją tik po trijų sekundžių (įvykis).

Atgalinio skambinimo funkcijos puikiai tinka mažoms programoms, tačiau plečiantis jūsų programoms jos gali labai greitai tapti per sudėtingos. Taip yra todėl, kad atgalinio skambinimo funkcijos dažnai iškviečia kitas atgalinio skambinimo funkcijas, sukurdamos įdėtųjų atgalinių skambučių grandinę.

Pažadų naudojimas

„JavaScript“ pridėjo pažadų po skambinimo funkcijų palaikymą. Jie yra gera alternatyva kuriant didesnes programas. Pažadas parodo, kas gali nutikti po asinchroninės operacijos. Šis galimas rezultatas bus vienas iš dviejų formų: išspręsta arba Atstumtas. Atskira funkcija apdoroja kiekvieną iš šių rezultatų, pašalindama įdėjimo poreikį (atšaukimo funkcijos problema). Vietoj to, pažadai skatina grandinės funkcijas, kurias lengviau naudoti.

Kiekvienas pažadas prasideda nuo naujo Pažadas objektas, turintis anoniminę funkciją su išspręsti ir atmesti parametrus. Naudodami šią funkciją turėsite asinchroninę programą, kuri grąžina sprendimą, jei asinchroninė operacija pavyksta, arba atmeta kitaip.

The tada () grandinės funkcija tvarko išspręsti funkcija ir sugauti () grandinės funkcija tvarko atmesti funkcija. Taigi, nereikia įdėtųjų if teiginių, kaip tai daroma naudojant atgalinio ryšio funkcijas.

Naudojant pažadų pavyzdį

const PromiseFunction = () =>{
return new Promise((išspręsti, atmesti) => {
setTimeout(() => {
išspręsti ("ši asinchroninė operacija atlikta gerai")
}, 3000)
})
}

PromiseFunction().then((rezultatas) => {
console.log ("Sėkmė", rezultatas)
}).catch((klaida) => {
console.log ("Klaida", klaida)
})

Aukščiau pateiktas kodas konsolėje grąžina šią išvestį:

Sėkmingai ši asinchroninė operacija buvo atlikta gerai

Taip yra todėl, kad pažadas grąžina išspręsti funkcija, kuri perduoda savo rezultatus tada () funkcija. Jei pažadas grąžins atmesti funkcija, kurią programa naudoja sugauti vietoj funkcijos.

Async/Await naudojimas

Jei nenorite kurti pažadų grandinės, kai dirbate su asinchroninėmis operacijomis, galite pabandyti asinchronizuoti / laukti. Asinchronizavimas / laukimas nėra visiškai kitoks asinchroninis įrankis nei pažadai, tik kitoks jų tvarkymo būdas. Jis vykdo pažadus nenaudodamas grandinės metodo. Taigi, panašiai, kaip pažadai geriau apdoroja asinchronines operacijas nei atgalinio skambinimo funkcijos, asinchronizavimas / laukimas turi pranašumų, palyginti su paprastais pažadais.

Yra du pagrindiniai kiekvienos asinchronizavimo / laukimo funkcijos atributai. Jie prasideda nuo async raktinis žodis ir laukti raktinis žodis laukia asinchroninės operacijos rezultato.

Asinchronizavimo / laukimo programos pavyzdys

const PromiseFunction = () =>{
return new Promise((išspręsti, atmesti) => {
setTimeout(() => {
išspręsti ("ši asinchroninė operacija atlikta gerai")
}, 3000)
})
}

const AsyncAwaitFunc = async () => {
const rezultatas = laukti PromiseFunction();
console.log (rezultatas);
}

AsyncAwaitFunc();

Aukščiau pateiktas kodas konsolėje grąžins šią išvestį:

ši asinchroninė operacija buvo atlikta gerai

Kokie yra pagrindiniai maisto produktai?

Iš šio straipsnio turėtumėte atkreipti dėmesį į keletą pagrindinių dalykų:

  • Asinchroninis programavimas yra vertingas, nes sumažina programos laukimo laiką ir sukuria greitesnes programas.
  • Atgalinio skambinimo funkcija gali būti sinchroninė arba asinchroninė.
  • Pažadai yra geresnis būdas valdyti asinchronines operacijas nei atgalinio skambinimo funkcijos.
  • Asinchronizavimo / laukimo funkcijos geriau įgyvendina pažadus nei naudojant grandinės funkcijas.
  • Asinchronizavimo / laukimo funkcija tvarko asinchronines operacijas taip, kad atrodo sinchroniškai, todėl jas lengviau suprasti.
  • Rodyklės funkcijos padeda parašyti geresnį kodą.
„JavaScript“ rodyklės funkcijos gali padaryti jus geresniu kūrėju

Norite būti geresnis interneto kūrimo srityje? Rodyklės funkcijos, pridėtos prie JavaScript ES6, suteikia du būdus kurti žiniatinklio programų funkcijas.

Skaitykite toliau

DalintisTviteryjeEl. paštas
Susijusios temos
  • Programavimas
  • Programavimas
  • JavaScript
Apie autorių
Kadeisha Kean (Paskelbta 45 straipsniai)

Kadeisha Kean yra visos programinės įrangos kūrėja ir techninių / technologijų rašytoja. Ji turi išskirtinį gebėjimą supaprastinti kai kurias sudėtingiausias technologines koncepcijas; gaminant medžiagą, kurią gali lengvai suprasti bet kuris technologijų naujokas. Ji aistringai rašo, kuria įdomią programinę įrangą ir keliauja po pasaulį (per dokumentinius filmus).

Daugiau iš Kadeisha Kean

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia