Bliss.js предлагает упрощённый синтаксис для работы с асинхронными операциями в JavaScript, интегрируя промисы в удобные методы библиотеки. Основная цель — сократить количество шаблонного кода при обработке асинхронных действий и обеспечить читаемость цепочек вызовов.
Промис в Bliss.js создаётся с помощью метода
Bliss.Promise, который принимает функцию с двумя
параметрами: resolve и reject.
let promise = Bliss.Promise((resolve, reject) => {
setTimeout(() => {
const success = true;
if (success) {
resolve("Операция выполнена успешно");
} else {
reject("Ошибка выполнения");
}
}, 1000);
});
Ключевой момент: объект promise в
Bliss.js полностью совместим с нативными промисами JavaScript, что
позволяет использовать стандартные методы .then,
.catch и .finally.
Bliss.js позволяет создавать цепочки промисов для последовательного
выполнения асинхронных операций. Цепочка строится методом
.then(), который принимает функцию с результатом
предыдущего промиса.
Bliss.Promise((resolve) => resolve(5))
.then(value => value * 2)
.then(value => `Результат: ${value}`)
.then(console.log);
Особенность Bliss.js: методы .then
могут напрямую возвращать новые промисы, что упрощает асинхронное
ветвление без вложенных колбэков.
Bliss.Promise((resolve) => resolve(10))
.then(value => Bliss.Promise(resolve => resolve(value + 5)))
.then(console.log); // Выведет 15
Метод .catch() в Bliss.js позволяет перехватывать
ошибки, возникшие в любом промисе цепочки. Также поддерживается
reject внутри пользовательской функции промиса.
Bliss.Promise((resolve, reject) => {
reject("Произошла ошибка");
})
.catch(error => {
console.error("Ошибка:", error);
});
Дополнительный момент: для выполнения кода
независимо от успеха или ошибки используется метод
.finally(). Он не получает аргументов и выполняется после
завершения всей цепочки.
Bliss.Promise(resolve => resolve("Ок"))
.finally(() => console.log("Цепочка завершена"));
Bliss.js предоставляет удобные методы для работы с несколькими промисами одновременно:
Bliss.Promise.all(array) — ожидает
завершения всех промисов в массиве и возвращает массив результатов. Если
хотя бы один промис завершился с ошибкой, цепочка перейдёт в
.catch.Bliss.Promise.all([
Bliss.Promise(resolve => resolve(1)),
Bliss.Promise(resolve => resolve(2)),
Bliss.Promise(resolve => resolve(3))
])
.then(results => console.log(results)); // [1, 2, 3]
Bliss.Promise.race(array) — завершает
цепочку при первом выполненном или отклонённом промисе из массива.Bliss.Promise.race([
Bliss.Promise(resolve => setTimeout(() => resolve("Первый"), 100)),
Bliss.Promise(resolve => setTimeout(() => resolve("Второй"), 200))
])
.then(console.log); // "Первый"
Bliss.js интегрируется с синтаксисом async/await, что
позволяет использовать промисы в более наглядной форме.
async function example() {
const result = await Bliss.Promise(resolve => setTimeout(() => resolve(42), 500));
console.log(result); // 42
}
example();
Преимущество: промисы Bliss.js полностью
поддерживают стандартные механизмы JavaScript, включая обработку ошибок
через try/catch.
Сокращение вложенности Использование цепочек
.then вместо колбэков уменьшает “ад колбэков” и улучшает
читаемость кода.
Повторное использование промисов Промис можно хранить в переменной и использовать в нескольких местах, не создавая заново асинхронную операцию.
Комбинирование синхронного и асинхронного кода
Любое значение, возвращённое из .then, автоматически
оборачивается в промис Bliss.js, что упрощает смешанный код.
Bliss.js делает работу с асинхронностью в JavaScript более
выразительной и удобной, сохраняя полную совместимость с нативными
промисами и современными подходами async/await.