Asinxron/Fetch/Https
Tags: javascript, frontend, asinxron, https
Published: 2024-07-09 15:39:40

**Asinxron**
"Asinxron" so'zi _bir vaqtda bo'lmagan yoki_ _bir vaqtda amalga oshirilmagan_ degan ma'noni anglatadi. Kompyuter dasturlashida asinxron kod deganda dastur bajarilishi davomida boshqa kodlar bilan parallel ravishda bajarilishi mumkin bo'lgan kod tushuniladi. Bu kodning bajarilishi natijasini kutish shart emas, ya'ni boshqa kodlar bajarilishini davom ettirishi mumkin.

Sinxron kod: Har bir kod qatori ketma-ketlikda bajariladi. Bir qator tugamasa, keyingi qator boshlanmaydi.

```
console.log('Birinchi');
console.log('Ikkinchi');
console.log('Uchinchi');

```
Asinxron kod: Ba'zi kod qatorlari bajarilishi vaqt talab qilishi mumkin, masalan, serverga so'rov yuborish yoki fayl o'qish. Bu jarayonlar tugaguniga qadar boshqa kodlar bajarilishi davom ettiriladi.

```
console.log('Birinchi');
setTimeout(() => {
  console.log('Ikkinchi');
}, 1000); // 1 soniyadan keyin bajariladi
console.log('Uchinchi');

```

setTimeout funksiyasi asinxron ravishda ishlaydi. setTimeout funksiyasi 1 soniyadan keyin "Ikkinchi" qatorini konsolga chiqaradi, ammo dastur bu vaqt davomida "Uchinchi" qatorini chiqarishni davom ettiradi.

Serverga so'rov yuborish va javobni kutish: fetch funksiyasi serverga so'rov yuboradi va javob kelgunicha dastur boshqa ishlarni bajarishi mumkin.
Fayl tizimi bilan ishlash: Faylni o'qish yoki yozish jarayonida dastur boshqa vazifalarni bajarishi mumkin.
Taymerlar va intervallar: Ma'lum vaqt o‘tgach yoki intervalda kodni bajarish.


Asinxronlikning Afzalliklari:
Tezkorlik: Ko'p vazifali dasturlash imkoniyati. Bir vaqtning o'zida bir nechta vazifalarni bajarish imkonini beradi.
Foydalanuvchi tajribasi: Foydalanuvchi interfeysi osonlik bilan bloklanmaydi va javob beruvchi bo‘lib qoladi.

**Asinxron Kodinga JavaScriptda Yondashuvlar:**

- Callbacks: Funksiyalarni argument sifatida uzatish.
- Promises: Vaqt talab qiluvchi operatsiyalar uchun natija yoki xatoni qaytaruvchi obyektlar.
- Async/Await: Promises bilan ishlashni soddalashtiruvchi sintaktik qobiq.


```
async function getData() {
  try {
    let response = await fetch('https://api.example.com/data');
    let data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Xato:', error);
  }
}

getData();

```
Ushbu misolda await kalit so'zi fetch va response.json() funksiyalarining natijalarini kutib turadi va kodni ko'rib chiqishni osonlashtiradi.

**fetch Funksiyasidan Foydalanish**

```
// URL dan ma'lumot olish
fetch('https://api.example.com/data')
  .then(response => {
    // Javobni JSON formatga o'girish
    return response.json();
  })
  .then(data => {
    // Olingan ma'lumotni ishlatish
    console.log(data);
  })
  .catch(error => {
    // Xatolarni tutish
    console.error('Xato:', error);
  });

```
HTTP So'rov Turlari
fetch yordamida GET, POST, PUT, DELETE kabi turli xil HTTP so'rovlarini amalga oshirish mumkin. Quyida POST so'rovi misoli keltirilgan:

```
fetch('https://api.example.com/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    ism: 'Ali',
    yosh: 25
  })
})
  .then(response => response.json())
  .then(data => {
    console.log('Yangi yozuv qo\'shildi:', data);
  })
  .catch(error => {
    console.error('Xato:', error);
  });

```
**HTTPS STATUS CODLARI**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dstw7qm8p0ribxqf9sub.png)