Sobes.tech
Junior

Васоитиҳои истифода бурдаатон барои навиштани зангҳои асинхронӣ.

sobes.tech AI

Ҷавоб аз AI

JavaScript пешниҳод мекунад асбобҳои гуногун барои кор бо даъватҳои асинхронӣ:

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

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

    // Намунаи истифодаи promises
    fetch('/api/data')
      .then(response => response.json()) // Коркарди ҷавоби муваффақ
      .then(data => console.log(data)) // Кор бо маълумоти гирифташуда
      .catch(error => console.error('Хатогӣ:', error)); // Кор бо хатоҳо
    
  • Async/await: Шакли синтаксӣ дар болоии promises, ки имкон медиҳад, ки кодро ба услуби бештар мутобиқ нависед, ки хонданро беҳтар мекунад.

    // Намунаи истифодаи async/await
    async function fetchData() {
      try {
        const response = await fetch('/api/data'); // интизор шудан барои анҷоми fetch
        const data = await response.json(); // интизор шудан барои парс кардани JSON
        console.log(data);
      } catch (error) {
        console.error('Хатогӣ:', error);
      }
    }
    fetchData();
    
  • XMLHttpRequest (XHR): API асосӣ барои иҷрои дархостҳои HTTP дар браузер. Ин нисбат ба fetch сатҳи поёнтар аст ва бештар кодро талаб мекунад.

    // Намунаи истифодаи XMLHttpRequest
    const xhr = new XMLHttpRequest();
    xhr.open('GET', '/api/data', true); // дархости асинхронӣ
    xhr.onload = function() {
      if (xhr.status >= 200 && xhr.status < 300) {
        console.log(JSON.parse(xhr.responseText));
      } else {
        console.error('Хатогӣ:', xhr.statusText);
      }
    };
    xhr.onerror = function() {
      console.error('Хатогии шабаҳа');
    };
    xhr.send();
    
  • Fetch API: API муосир ва бештар флексибл барои иҷрои дархостҳои HTTP, ки асос ёфтааст ба promises.

    // Намунаи истифодаи Fetch API
    fetch('/api/data')
      .then(response => response.json())
      .then(data => console.log(data))
      .catch(error => console.error('Хатогӣ:', error));
    
  • Китобхонаҳо барои кор бо дархостҳои HTTP: Масалан, axios (барои браузер ва Node.js) ё jQuery.ajax(). Онҳо содда ва стандартизатсия мекунанд иҷрои дархостҳои асинхронӣ.

    // Намунаи истифодаи Axios
    axios.get('/api/data')
      .then(response => console.log(response.data))
      .catch(error => console.error('Хатогӣ:', error));
    

Интихоби асбоб вобаста ба хусусиятҳои вазифа ва контексти лоиҳа аст. Fetch ва async/await усулҳои муосир ва тавсияшуда барои бештари ҳолатҳо мебошанд.