Ответ
До появления Promise в JavaScript для асинхронного кода использовались колбэки (callback functions), что приводило к "аду колбэков" (callback hell) — вложенным и сложно читаемым структурам.
Пример с колбэками:
fs.readFile('file1.txt', 'utf8', (err, data1) => {
if (err) throw err;
fs.readFile('file2.txt', 'utf8', (err, data2) => {
if (err) throw err;
console.log(data1 + data2);
});
});
Также существовали библиотеки (например, async.js), которые упрощали работу с асинхронностью, но не решали проблему полностью. Позже появились Deferred (jQuery) и генераторы, но они были нестандартными или сложными. Promise (ES6) решили эти проблемы, предоставив цепочки .then() и .catch().
Ответ 18+ 🔞
Эх, ну и времена были, блядь! До того, как эти ваши Промисы нарисовались, в асинхронном коде творился натуральный пиздец, ёпта. Ад колбэков, сука, реальный — вот как это называлось. Представь себе: один колбэк в другом, тот в третьем, и всё это лесенкой вправо уезжает, пока глаза не начнут косить. Читать такое — терпения ноль ебать.
Вот, смотри, как раньше мучались, чтобы два файла прочитать:
fs.readFile('file1.txt', 'utf8', (err, data1) => {
if (err) throw err;
fs.readFile('file2.txt', 'utf8', (err, data2) => {
if (err) throw err;
console.log(data1 + data2);
});
});
Видишь эту пирамиду, блядь? Это ж чистой воды пиздопроебина! Ошибка на ошибке, вложение во вложение. И если там не два файла, а пять, так это вообще лес, в котором заплутаешь нахуй.
Народ, конечно, не сидел сложа руки. Вылезали разные библиотеки-костыли, типа async.js — они вроде как помогали эту кашу разгребать, но всё равно чувствовалось, что это костыль, а не решение. А ещё были эти Deferred от jQuery — ну, манда с ушами, если честно, свой велосипед, который только своих фанатов понимал.
Потом, блядь, начали экспериментировать с генераторами — идея вроде ничего, но сложновато, мозг выносит. А потом, наконец, как гром среди ясного неба — Промисы в ES6, ёба! Вот это уже поворот, ядрёна вошь!
Пришли они и навели марафет: цепочки .then(), ловля ошибок в одном .catch(), красота! Всё ровненько, читаемо, без этих лестниц в ад. Словно после подвала вышел на свежий воздух, в рот меня чих-пых!