Asinxron kodni debug qilish
Asinxron kodni debug qilish
Async xatolar yangi boshlanuvchilar uchun eng qiyin xatolardir.
Kod to‘g‘ri ko‘rinadi, lekin hech narsa sodir bo‘lmayotgandek.
Nima uchun asinxron kodni debug qilish qiyin
Async code runs later.
Shu sababli xatolar ko‘rinmasdek tuyuladi.
Yangi boshlovchilarning keng tarqalgan muammolari qatoriga yetishmayotgan ma’lumotlar va sezdirmasdan yuz beradigan xatolar kiradi.
Asinxron kod yuqoridan pastga qarab bajarilmaydi.
U biror amal tugaganda ishga tushadi.
fetch()’ni debug qilish
fetch() funksiyasi asinxron.
U ma’lumotlarni darhol qaytarmaydi.
Misol:
fetch("data.json")
.then(response => response.json())
.then(data => console.log(data));
Agar hech narsa ko‘rinmasa, avvalo konsolni tekshiring.
Ma’lumotlardan foydalanishdan oldin har doim javobni konsolga chiqaring.
Improved debugging:
fetch("data.json")
.then(response => {
console.log(response);
return response.json();
})
.then(data => console.log(data));
Network yorlig‘ini tekshiring
Async xatolar ko‘pincha tarmoq muammolaridir.
Network yorlig‘i so‘rov muvaffaqiyatsiz bo‘lganini ko‘rsatadi.
- So‘rov holatini (status) tekshiring.
- Fayl yo‘lini tekshiring.
- Server xato qaytargan-qaytarmaganini tekshiring.
async va await’ni debug qilish
async va await asinxron kodni o‘qishni osonlashtiradi.
Ular baribir asinxron bo‘lib qoladi.
Misol:
async function loadData() {
let response = await fetch("data.json");
let data = await response.json();
console.log(data);
}
loadData();
await satrlarda to‘xtash nuqtalarini o‘rnatishingiz mumkin.
Asinxron kodni ham oddiy kod kabi qadamma-qadam bajaring.
Asinxron xatolarni qayta ishlash
Asinxron xatolar aniq (explicit) qayta ishlanishi kerak.
Otherwise they fail silently.
Xatolarni qayta ishlash bilan misol:
async function loadData() {
try {
let response = await fetch("wrong.json");
let data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
}
async funksiyalar ichidagi xatolar ushlanishi (catch) kerak.
Hech qachon resolve bo‘lmaydigan Promise’lar
Sometimes async code never finishes.
Bu odatda return yetishmayotganini bildiradi.
Xato misol:
function getData() {
fetch("data.json")
.then(response => response.json());
}
Promise natijasi hech qachon qaytarilmaydi.
Zanjir (chaining) tuzganda Promise’larni har doim qaytaring.
Async Code uchun debug ro‘yxati
- Konsolda xatolar bor-yo‘qligini tekshiring.
- Network yorlig‘ini tekshiring.
- Log responses before using them.
- async funksiyalar bilan
try...catch’dan foydalaning. - Set breakpoints on
awaitlines.
Siz debug qilish boblarini tugatdingiz
Endi siz JavaScript-ni bosqichma-bosqich debug qilishni bilasiz.
Bu ko‘nikma yangi boshlovchilarni haqiqiy dasturchilardan ajratib turadi.
Debug qilish — iste’dod emas.
Bu — odat.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
