Sobes.tech
Middle

Пеш аз пайдоиши Promise чӣ истифода мебурдед?

sobes.tech AI

Ҷавоб аз AI

Пеш аз пайдоиши Promise, callback-ҳо васеъ истифода мешуданд.

Маънии callback-ҳо:

Як функсия ба функсияи дигар ҳамчун аргумент дода мешавад ва пас аз анҷоми як амали муайян иҷро мешавад.

Масалан:

// Масалан, даъвати амали асинхрон бо callback
function fetchData(callback) {
  setTimeout(() => {
    const data = "Баъзе маълумотҳо";
    callback(null, data); // Аргумент аввал хато, дуввум натиҷа
  }, 1000);
}

fetchData((err, data) => {
  if (err) {
    console.error("Хатогӣ дар гирифтани маълумот:", err);
  } else {
    console.log("Маълумот гирифта шуд:", data);
  }
});

Норасогии истифодаи танҳо callback-ҳо:

  • Callback Hell (Ҷаҳаннам callbacks): Занҷираи амали асинхронӣ, ки дар он функсияҳои дарундаро ҷойгир мекунанд, ба коди хеле дарундаро ва душвор хондан оварда мерасонад.
  • Мушкилот дар идоракунии хато: Ҳар сатҳ бояд хатоҳоро гузаронид ва санҷад.
  • Норасогии равиши стандартӣ: Китобхонаҳои гуногун метавонанд шартномаҳои гуногун барои callback-ҳо истифода баранд.

Равишҳои алтернативӣ пеш аз Promise:

Пеш аз пайдоиши Promise, ғайр аз callback-ҳои "хушк", китобхонаҳо ва намунаҳо барои идоракунии асинхронӣ истифода мешуданд, масалан:

  • Китобхонаҳои асинхронӣ: Масалан, async (барои Node.js, аммо дар браузер низ истифода мешавад). Воҳидҳо барои идоракунии ҷараёнҳои асинхронӣ (параллелӣ иҷро кардан, иҷрои пайдарпай).
  • Намунаи Publisher/Subscriber (Pub/Sub): Барои сценарияҳои мураккабтар.
  • Эмиттерҳои ҳодиса: Дар Node.js ва муҳити браузер (масалан, EventEmitter).

Бо вуҷуди ин, callback-ҳо асоси бисёр амалиётҳои асинхрониро ташкил медиҳанд. Promise як роҳи мураттаб, ягона ва хонданӣ барои кор бо асинхронӣ пешниҳод кард, ки бисёр мушкилоти "Callback Hell"-ро бартараф кард.