Asinhronā programmēšana ir programmatūras izstrādes pamatelements. Grūti noticēt, ka šī programmēšanas koncepcija pastāv tikai kopš divdesmit pirmā gadsimta. F# programmēšanas valoda bija pirmā no vienaudžiem, kas ieviesa asinhrono programmēšanu 2007. gadā.
Citas valodas, piemēram, C#, Python, JavaScript un C++, pakāpeniski pievienoja asinhronās programmēšanas atbalstu. Lielais jautājums ir, kādu vērtību asinhronā programmēšana pievieno jūsu lietojumprogrammām?
Šajā rakstā ir sniegtas atbildes uz šiem un citiem jautājumiem, tāpēc jūs uzzināsit visu par to, kā izmantot asinhrono programmēšanu.
Kas ir sinhronā programmēšana?
Sinhronā programmēšana attiecas uz programmu tās visvienkāršākajā formā. Šis programmēšanas modelis secīgi apstrādā koda rindas programmā vai skriptā. Tas vienmēr sākas no pirmās koda rindas programmā. Pēc tam tas gaida, līdz katra koda rinda ir pabeigusi izpildi, pirms pāriet uz nākamo.
Sinhronajā modelī ir iekļauts arī nosacījuma kods, piemēram, ja un kamēr paziņojumi. Lai gan tiks izpildīts tikai daži nosacījuma priekšraksta kodi, programma joprojām darbosies secīgi.
Sinhronās programmas piemērs
const SyncCode = () => {
console.log ("Šī ir programmas pirmā rinda")
console.log ("Šī ir programmas otrā rinda")
console.log ("Šī ir pēdējā programmas rinda")
}
SyncCode();
Palaižot iepriekš minēto JavaScript programmu, konsolē tiks parādīta šāda izvade:
Šī ir programmas pirmā rinda
Šī ir programmas otrā rinda
Šī ir programmas pēdējā rinda
Iepriekš redzamā izvade ir tieši tā, ko jums vajadzētu sagaidīt. Programma sākas no augšas un gaida, līdz tiek pabeigta viena koda rinda, pirms pāriet uz nākamo.
Kas ir asinhronā programmēšana?
Asinhronā programmēšana ir pretēja sinhronajai programmēšanai. Asinhronās programmēšanas modelis vienlaikus apstrādā vairākas kodu rindas. Tas negaida, līdz programmas iepriekšējā koda rinda ir pabeigusi izpildi, pirms pāriet uz nākamo.
Saistīts: Sinhronā vs. Asinhronā programmēšana: kā tās atšķiras?
Asinhronā programmēšana var uz pusi samazināt izpildes laiku, efektīvi radot ātrākus datorus.
Asinhronās programmas piemērs
const AsyncCode = () => {
console.log ("Šī ir programmas pirmā rinda")
setTimeout(() => {
console.log ("Šī ir programmas otrā rinda")
}, 3000)
console.log ("Šī ir pēdējā programmas rinda")
}
AsyncCode ();
Izpildot iepriekš minēto JavaScript kodu, jūsu konsolē tiks parādīta šāda izvade:
Šī ir programmas pirmā rinda
Šī ir programmas pēdējā rinda
Šī ir programmas otrā rinda
Ja salīdzināsiet iepriekš minēto konsoles izvadi ar asinhrono programmu, kas to ģenerē, jūs redzēsit, ka pastāv acīmredzama neatbilstība. Zvans uz žurnāls “Šī ir programmas otrā rindiņa” ir pirms tās, kas saka: “Šī ir programmas pēdējā rindiņa”. Tomēr konsoles izvade to neatspoguļo.
Tā kā JavaScript galvenokārt ir sinhrons, iepriekš minētajā programmā esošais kods tika izpildīts secīgi. Bet JavaScript atbalsta asinhrono programmēšanu, izmantojot tādas funkcijas kā setTimeout() metodi.
The setTimeout() metode ir asinhrona JavaScript metode, kas izmanto divus argumentus: funkciju un aizkavi. Aizkave ir taimeris (milisekundēs), kas aizkavē funkcijas izpildi. Tātad, kamēr iepriekš minētā programma gaida trīs sekundes, lai izpildītu funkciju setTimeout() metodi, tas pāriet uz nākamo koda rindiņu. Tā rezultātā trešās funkcijas izsaukums tiek izpildīts pirms otrā.
Asinhronās JavaScript tehnoloģijas
Neatkarīgi no setTimeout() iepriekš minēto metodi, vairākas JavaScript tehnoloģijas izmanto asinhrono programmēšanu. Šīs tehnoloģijas izmanto asinhronās programmēšanas modeli, lai izstrādātu ātrākas nebloķējošas lietojumprogrammas. Dažas no šīm tehnoloģijām ietver:
- jQuery Ajax
- Axios
- NodeJS
Saistīts: Kas ir Node.js? Lūk, kā izmantot servera puses JavaScript
Asinhrono programmu izveide ar JavaScript
Ir vairāki veidi, kā apstrādāt asinhrono kodu. Izvēlētajai metodei ir jābūt atkarīgai no lietojumprogrammas veida, kuru vēlaties izstrādāt. Šīs metodes ietver atzvanīšanas funkcijas, solījumus un asinhronizāciju/gaidīšanu.
Atzvanīšanas funkcijas
Atzvanīšanas funkcijai ir divas svarīgas īpašības. Tie kalpo kā parametri citām funkcijām, un tie paļaujas uz ārējiem notikumiem, lai veiktu savu pienākumu. The setTimeout() Iepriekš minētajā asinhronajā piemērā izmantotā metode ir atzvanīšanas funkcija. Programma nodod tai žurnāla funkciju kā parametru (atzvanīšanas funkcija) un izpilda to tikai pēc trim sekundēm (notikums).
Atzvanīšanas funkcijas ir lieliski piemērotas mazām programmām, taču, lietojumprogrammām augot, tās ļoti ātri var kļūt pārāk sarežģītas. Tas ir tāpēc, ka atzvanīšanas funkcijas bieži izsauc citas atzvanīšanas funkcijas, izveidojot ligzdotu atzvanīšanu ķēdi.
Solījumu izmantošana
JavaScript pievienoja atbalstu solījumiem pēc atzvanīšanas funkcijām. Tie ir laba alternatīva, veidojot lielākas lietojumprogrammas. Solījums atspoguļo to, kas varētu notikt pēc asinhronas darbības. Šis iespējamais rezultāts izpaudīsies vienā no diviem veidiem: atrisināts vai noraidīts. Atsevišķa funkcija apstrādā katru no šiem rezultātiem, novēršot ligzdošanas nepieciešamību (atzvanīšanas funkcijas problēma). Tā vietā solījumi veicina ķēdes funkcijas, kuras ir vieglāk izmantot.
Katrs solījums sākas ar jaunu Apsolīt objektu, kam ir anonīma funkcija ar atrisināt un noraidīt parametrus. Šajā funkcijā jums būs asinhronā lietojumprogramma, kas atgriež atrisinājumu, ja asinhronā darbība ir veiksmīga, vai noraida pretējā gadījumā.
The tad () ķēdes funkcija apstrādā atrisināt funkcija un noķert () ķēdes funkcija apstrādā noraidīt funkcija. Tāpēc nav nepieciešami ligzdoti paziņojumi, kā tas ir atzvanīšanas funkciju gadījumā.
Izmantojot solījumu piemēru
const PromiseFunction = () =>{
return new Promise((atrisināt, noraidīt) => {
setTimeout(() => {
atrisināt ("šī asinhronā darbība tika izpildīta labi")
}, 3000)
})
}
PromiseFunction().then((rezultāts) => {
console.log("Veiksme", rezultāts)
}).catch((kļūda) => {
console.log ("Kļūda", kļūda)
})
Iepriekš minētais kods konsolē atgriež šādu izvadi:
Veiksmīgi šī asinhronā darbība tika izpildīta labi
Tas ir tāpēc, ka solījums atgriež atrisināt funkcija, kas nodod savus rezultātus uz tad () funkcija. Ja solījums atgriežas noraidīt funkcija, ko programma izmanto noķert funkciju vietā.
Async/Await izmantošana
Ja nevēlaties izveidot solījumu ķēdi, veicot asinhronās darbības, varat mēģināt async/await. Asinhronizācija/gaidīšana nav pilnīgi atšķirīgs asinhronais rīks no solījumiem, tikai cits veids, kā tos apstrādāt. Tas apstrādā solījumus, neizmantojot ķēdes metodi. Tātad, tāpat kā solījumi labāk apstrādā asinhronās darbības nekā atzvanīšanas funkcijas, asinhronizācijai/gaidīšanai ir priekšrocības salīdzinājumā ar vienkāršiem solījumiem.
Katrai asinhronizācijas/gaidīšanas funkcijai ir divi galvenie atribūti. Tie sākas ar asinhrons atslēgvārds un gaidīt atslēgvārds gaida asinhronas darbības rezultātu.
Asinhronās/gaidīšanas programmas piemērs
const PromiseFunction = () =>{
return new Promise((atrisināt, noraidīt) => {
setTimeout(() => {
atrisināt ("šī asinhronā darbība tika izpildīta labi")
}, 3000)
})
}const AsyncAwaitFunc = async () => {
const rezultāts = gaidiet PromiseFunction();
console.log (rezultāts);
}
AsyncAwaitFunc();
Iepriekš minētais kods konsolē atgriezīs šādu izvadi:
šī asinhronā darbība noritēja labi
Kādas ir galvenās līdzņemamās preces?
Ir vairāki svarīgi punkti, kas jums jāņem vērā no šī raksta:
- Asinhronā programmēšana ir vērtīga, jo tā samazina programmas gaidīšanas laiku, radot ātrākas lietojumprogrammas.
- Atzvanīšanas funkcija var būt sinhrona vai asinhrona.
- Promises piedāvā labāku veidu, kā apstrādāt asinhronās darbības nekā atzvanīšanas funkcijas.
- Asinhronās/gaidīšanas funkcijas apstrādā solījumus labāk nekā ķēdes funkciju izmantošana.
- Asinhronā/gaidīšanas funkcija apstrādā asinhronās darbības tā, lai tās izskatās sinhronas, padarot to vieglāk saprotamu.
- Bultiņu funkcijas palīdz rakstīt labāku kodu.
Vai vēlaties būt labāks tīmekļa izstrādē? Bultiņu funkcijas, kas pievienotas JavaScript ES6, sniedz jums divus veidus, kā izveidot funkcijas tīmekļa lietotnēm.
Lasiet Tālāk
- Programmēšana
- Programmēšana
- JavaScript
Kadeiša Kīna ir pilnas komplektācijas programmatūras izstrādātāja un tehnisko/tehnoloģiju rakstniece. Viņai ir izteikta spēja vienkāršot dažus no vissarežģītākajiem tehnoloģiskajiem jēdzieniem; ražo materiālu, ko var viegli saprast ikviens tehnoloģiju iesācējs. Viņa aizraujas ar rakstīšanu, interesantas programmatūras izstrādi un ceļošanu pa pasauli (izmantojot dokumentālās filmas).
Abonējiet mūsu biļetenu
Pievienojieties mūsu biļetenam, lai saņemtu tehniskos padomus, pārskatus, bezmaksas e-grāmatas un ekskluzīvus piedāvājumus!
Noklikšķiniet šeit, lai abonētu