Skip to content

JavaScript Fetch API (Asinxron)

fetch() metodi serverdan ma'lumotlarni so'rashning zamonaviy va asinxron usulidir.


fetch Promise qaytaradi

fetch() metodi ma'lumotni darhol qaytarmaydi. Buning o'rniga u Promise (va'da) qaytaradi, bu va'da so'rov muvaffaqiyatli bo'lganda Response (javob) obyektiga aylanadi.

Misol

js
fetch('data.json').then(function (response) {
  console.log(response)
})

Natijada JSON ma'lumotlari emas, balki Response obyekti chiqadi.


JSON ma'lumotlarini olish

JSON ma'lumotlarini o'qish uchun javob tanasini (body) tahlil qilish kerak. response.json() metodi ham promise qaytaradi.

Misol

js
fetch('data.json')
  .then(function (response) {
    return response.json()
  })
  .then(function (data) {
    console.log(data)
  })

fetch bilan async va await

async va await kalit so'zlari fetch kodini ancha o'qishli va tushunarli qiladi. Bu usul hozirgi kunda eng tavsiya etilganidir.

Misol

js
async function loadData() {
  let response = await fetch('data.json')
  let data = await response.json()
  console.log(data)
}

loadData()

Muhim: HTTP Xatolari

Yangi o'rganuvchilar orasida eng ko'p tarqalgan xato — fetch 404 yoki 500 xatolarida xato (reject) beradi deb o'ylash. Aslida, fetch faqat tarmoq bilan bog'liq muammolar (yo'q internet, noto'g'ri DNS) bo'lgandagina rad etiladi.

Diqqat!

404 yoki 500 javoblari rad etilgan promise hisoblanmaydi. Siz har doim response.ok xususiyatini tekshirishingiz kerak.

Misol

js
async function loadData() {
  let response = await fetch('missing.json')

  if (!response.ok) {
    console.log('HTTP xatosi:', response.status)
    return
  }

  let data = await response.json()
  console.log(data)
}

loadData()

Tarmoq Xatolari (Network Errors)

Tarmoq xatosi so'rovni oxirigacha yetkazish imkoni bo'lmaganda yuz beradi. Bunday xatolar promiseni rad etadi (reject).

Misol

js
async function loadData() {
  try {
    let response = await fetch('data.json')
    let data = await response.json()
    console.log(data)
  } catch (error) {
    console.log('Tarmoq xatosi yuz berdi')
  }
}

Callback va Fetch farqi

Eski XMLHttpRequest bilan callback-lardan foydalanish kodni murakkablashtirardi. fetch() promiselar yordamida kodni soddalashtiradi.

Callback (XMLHttpRequest)Promise / async-await (Fetch)
Funksiyani uzatish kerakPromisni kutish kerak (await)
Xatolar qo'lda boshqariladiTizimli xatolar bilan ishlash
Kod "chalkash" bo'lishi mumkinKetma-ket va tushunarli o'qiladi
Bosqichlarni bog'lash qiyinZanjirli bog'lash oson