Skip to content

Asinxron Dasturlash haqida

Asinxron kod dasturga uzoq davom etadigan vazifani (masalan, faylni yuklash yoki serverga so'rov yuborish) boshlash va u tugashini kutmasdan boshqa ishlarni davom ettirish imkonini beradi.

Nega asinxronlik kerak?

Asinxron kod ilovaning "muzlab qolishini" (freezing) oldini oladi. Agar sahifa bitta rasmni yuklash uchun butunlay to'xtab qolsa, foydalanuvchi tajribasi juda yomon bo'ladi.


Boshqaruv oqimi (Control Flow)

Control Flow — bu dasturdagi buyruqlarning bajarilish tartibidir. Odatda JavaScript kodni yuqoridan pastga va chapdan o'ngga qarab bajaradi. Asinxron dasturlash esa bu tartibni o'zgartirishi mumkin.


Sinxron vs Asinxron

Sinxron oqimda har bir qator o'zidan oldingisi tugashini kutadi.

Sinxron misol:

js
console.log('A')
console.log('B')
console.log('C')
// Natija har doim: A B C

Asinxron misol:

js
console.log('A')

setTimeout(() => {
  console.log('B')
}, 1000)

console.log('C')
// Natija: A C B

Diqqat qiling!

Yuqoridagi misolda "B" bir soniyadan keyin chiqadi, ungacha esa JavaScript "C" ni chiqarib bo'ladi. Bu asinxronlikning oddiy namunasidir.


Yangi boshlovchilarning xatosi

Ko'pincha dasturchilar asinxron natijani darhol olishni kutishadi:

js
let result

setTimeout(() => {
  result = 5
}, 1000)

console.log(result) // natija: undefined

result o'zgaruvchisi undefined bo'ladi, chunki bir soniya vaqt o'tmasdan turib console.log ishga tushib bo'lgan.


Asinxronlik vs Parallelizm

  • Parallelizm (Parallel) — bir vaqtning o'zida bir nechta protsessor yordamida bir nechta ishni bajarish.
  • Asinxronlik (Asynchronous) — vazifalar orasida almashib turish (Switching).

JavaScript asosan bitta oqimli (single-threaded) dvigatelda ishlaydi, u asinxron vazifalarni Event Loop orqali boshqaradi.

XususiyatAsinxron (Kechiktirilgan)Parallel (Bir vaqtda)
MaqsadSahifa qotib qolmasligiIshni tezroq bitirish
BajarilishiNavbatma-navbat almashishBir paytda bir nechta amal
Uskuna1 ta protsessorda ham bo'ladiBir nechta protsessor kerak

Tutorial davomida nima o'rganamiz?

Biz asinxron dasturlashni bosqichma-bosqich o'rganamiz:

  1. Taymerlar (Timeouts) nima?
  2. Nima uchun callbacklar yaratilgan?
  3. Promislar kelajakdagi qiymatni qanday ifodalaydi?
  4. Nima uchun async va await eng yaxshi tanlov?
  5. Asinxron kodni qanday debug qilish kerak?

Restoran analogiyasi:

Ovqatga buyurtma berdingiz (async call). Oshpaz ovqatni tayyorlaguncha siz joyingizga o'tirib boshqa ishlar bilan shug'ullanasiz. Ofitsiant ovqatni olib kelganida (callback), siz ovqatlanishni boshlaysiz.