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 (Callback-ների դժոխք): Ներքևի շղթայված ասինխրոն գործողությունների շղթան հանգեցնում է շատ խոր և դժվար ընթեռնելի կոդի:
  • Սխալների կառավարման դժվարություններ: Պետք է փոխանցել և ստուգել սխալները յուրաքանչյուր մակարդակում:
  • Ստանդարտացված մոտեցում չլինելը: Տարբեր գրադարաններ կարող էին օգտագործել տարբեր պայմանագրեր callback-ների համար:

Ալտերնատիվ մոտեցումներ Promise-ից առաջ:

Promise-ի առաջ, բացի "մաքուր" callback-ներից, օգտագործվում էին գրադարաններ և նմուշներ ասինխրոնիզմը կառավարելու համար, օրինակ՝

  • Ասինխրոն գրադարաններ: Օրինակ, async (Node.js-ի համար, բայց նաև բրաուզերում): Ներկայացնում էին գործիքներ ասինխրոն հոսքերը կառավարելու համար (համաժամկետ կատարում, հաջորդական կատարում):
  • Publisher/Subscriber (Pub/Sub) նմուշ: Ավելի բարդ սցենարների համար:
  • Իրադարձությունների հրատարակիչներ: Node.js-ում և բրաուզերային միջավայրում (օրինակ՝ EventEmitter):

Այնուամենայնիվ, callback-ները մնացին շատ ասինխրոն գործողությունների հիմքը: Promise-ը առաջարկեց ավելի կառուցվածքային, միավոր և ընթեռնելի ձև աշխատելու համար ասինխրոնության հետ, և լուծեց շատ խնդիրներ՝ "Callback Hell".