Чӣ гуна бо JavaScript-и асинхронӣ кор мекунед?
sobes.tech AI
Ҷавоб аз AI
Ман иштиҳолият билан JavaScriptда ишлаш учун коллбэклар, промислар ва async/awaitдан фойдаланаман.
Коллбэклар — бу бошқа функцияларга аргумент сифатида берилган ва муайян операция тугаши билан ишга тушадиган функциялар. Улар ичига ўта чуқур коллбэклар кириши мумкин.
// Коллбэк мисоли
function fetchData(callback) {
setTimeout(() => {
callback("Маълумотлар олинди");
}, 1000);
}
fetchData((data) => {
console.log(data); // 1 сониядан кейин "Маълумотлар олинди" деб чиқади
});
Промислар — бу асинхрон операциянинг якунланиши ёки номуваффақиятини ифода этувчи объектлар. Улар асинхрон код билан ишлашни осонлаштиради, чуқур ичига киришдан сақлайди. Уларнинг учта ҳолати бор: pending (кутиб туриш), fulfilled (муваффақиятли бажарилган), rejected (рад этилган).
// Промис мисоли
function fetchDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Маълумотлар олинди");
}, 1000);
});
}
fetchDataPromise()
.then((data) => {
console.log(data); // 1 сониядан кейин "Маълумотлар олинди" деб чиқади
})
.catch((error) => {
console.error("Хатолик:", error);
});
Async/await — бу промислар ustida sintaktik shakar bo‘lib, asinxron kodni o‘qilishi osonroq qiladi, sinxron kodga o‘xshash. async bilan belgilangan funksiya har doim promissni qaytaradi. await operatori faqat async funksiyasi ichida ishlatiladi va promiss bajarilishini yoki rad etilishini kutadi.
// Async/await misoli
async function fetchDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Маълумотлар олинди");
}, 1000);
});
}
async function processData() {
try {
const data = await fetchDataAsync();
console.log(data); // 1 сониядан кейин "Маълумотлар олинди" деб чиқади
} catch (error) {
console.error("Хатолик:", error);
}
}
processData();
Кўпинча async/awaitдан API сўровлари билан ишлашда фойдаланаман, чунки бу асинхрон операцияларни энг қулай ва ўқишга осон усул. Бир неча асинхрон операцияни параллел бажариш учун Promise.all() ёки Promise.allSettled()дан фойдаланаман.
Event loopни ишлатиб, асинхрон коднинг ишлаш тартибини, микротасклар ва макротаскларни тушунмоқдаман.