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 (Callback-ների դժոխք): Ներքևի շղթայված ասինխրոն գործողությունների շղթան հանգեցնում է շատ խոր և դժվար ընթեռնելի կոդի:
- Սխալների կառավարման դժվարություններ: Պետք է փոխանցել և ստուգել սխալները յուրաքանչյուր մակարդակում:
- Ստանդարտացված մոտեցում չլինելը: Տարբեր գրադարաններ կարող էին օգտագործել տարբեր պայմանագրեր callback-ների համար:
Ալտերնատիվ մոտեցումներ Promise-ից առաջ:
Promise-ի առաջ, բացի "մաքուր" callback-ներից, օգտագործվում էին գրադարաններ և նմուշներ ասինխրոնիզմը կառավարելու համար, օրինակ՝
- Ասինխրոն գրադարաններ: Օրինակ,
async(Node.js-ի համար, բայց նաև բրաուզերում): Ներկայացնում էին գործիքներ ասինխրոն հոսքերը կառավարելու համար (համաժամկետ կատարում, հաջորդական կատարում): - Publisher/Subscriber (Pub/Sub) նմուշ: Ավելի բարդ սցենարների համար:
- Իրադարձությունների հրատարակիչներ: Node.js-ում և բրաուզերային միջավայրում (օրինակ՝
EventEmitter):
Այնուամենայնիվ, callback-ները մնացին շատ ասինխրոն գործողությունների հիմքը: Promise-ը առաջարկեց ավելի կառուցվածքային, միավոր և ընթեռնելի ձև աշխատելու համար ասինխրոնության հետ, և լուծեց շատ խնդիրներ՝ "Callback Hell".