Sobes.tech
Junior

Асинхронӣ чист?

sobes.tech AI

Ҷавоб аз AI

Асинхронӣ дар контексти JavaScript қобилияти иҷрои вазифаҳост, ки бидуни бастани ҷараёни асосии иҷрои барнома. Ин имкон медиҳад, ки барнома ҷавобгӯ боқӣ монад, масалан, дар вақти дархостҳои шабакавӣ ё амалиётҳои воридот ва баромад.

Концепсияҳо ва механизмҳои асосӣ:

  • Event Loop: Ҷонмардии асинхронӣ дар JavaScript. Вай пайваста рӯйхати паёмҳоро (Message Queue) санҷида, агар стеки даъватҳо (Call Stack) холӣ бошад, вазифаҳоро аз рӯйхат ба стек барои иҷро интиқол медиҳад.

  • Callback функсияҳо: Функсияҳое, ки ҳамчун аргумент ба функсияҳои дигар дода мешаванд ва пас аз анҷоми амалиёти асинхронӣ даъват мешаванд.

  • Promises: Объект, ки анҷоми ниҳоии (ё нокомӣ) амалиёти асинхронӣ ва натиҷаи онро намояндагӣ мекунад. Ин имкон медиҳад, ки кодҳои асинхронӣ хонданӣ ва соддатар гарданд, бо парҳез аз "callback hell".

    // Мисоли promise
    const myPromise = new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve("Амалиёт бо муваффақият анҷом ёфт!");
      }, 1000);
    });
    
    myPromise
      .then(result => {
        console.log(result); // Пас аз 1 сония мебарояд
      })
      .catch(error => {
        console.error(error);
      });
    
  • Async/Await: Шакли синтаксисӣ дар болоии promise-ҳо, ки кодро бештар ба синхронӣ монанд мекунад, ки хонданро беҳтар ва хатоҳои коркардаро содда мекунад.

    // Мисоли async/await
    async function fetchData() {
      try {
        const response = await fetch('https://api.example.com/data');
        const data = await response.json();
        console.log(data);
      } catch (error) {
        console.error('Хатогӣ дар гирифтани маълумот:', error);
      }
    }
    
    fetchData();
    

Мувофиқсозии механизмҳо:

Механизм Тавсиф Манфиатҳо Норасоиҳо
Callback функсияҳо Функсияҳое, ки пас аз анҷоми вазифаи асинхронӣ даъват мешаванд. Механизми содда ва асосӣ. "Callback hell" дар ҳолатҳои дарозии функсияҳо.
Promises Объект, ки натиҷаи амалиёти асинхронро намояндагӣ мекунад. Беҳтар шудани хонданӣ, коркарди хатоҳо. Мутобиқ бо пайвандҳо метавонад гуруҳ шавад.
Async/Await Шакли синтаксисӣ дар болоии promise-ҳо. Кодро хаттӣ ва фаҳмидан осон мекунад. Беҳтарин хонданӣ, хатоҳои содда. Талаб мекунад promise-ҳо.

Асинхронӣ барои сохтани веб-барномаҳои муосир ва ҷавобгӯ муҳим аст, ки имкон медиҳад амалиётҳои дарозмуддат, ба мисли дархостҳо ба API, бидуни бастани интерфейси корбар иҷро шаванд.