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"-ро бартараф кард.