При создании экземпляра промиса мы все передаем функцию — эта функция является исполнителем для этого экземпляра промиса. Или, другими словами, экземпляры промисов принимают в качестве аргумента метод, называемый исполнителем.
new Promise(executor)
Исполнитель промиса executor принимает в качестве аргументов два метода: resolve и reject.
Внутри исполнителя, если вызывается разрешение, экземпляр Promise
становится выполненным.
const executor = (resolve, reject) => {
setTimeout(() => resolve("I'm resolving"), 1000);
};
new Promise(executor).then(result => {
console.log(result);
// Output after 1000ms: I'm resolving
});
Если возникает исключение, вместо этого вызывается reject, и экземпляр Promise
становится отклоненным.
const executor = (resolve, reject) => {
setTimeout(() => reject(new Error("I'm rejecting")), 1000);
};
new Promise(executor).catch(error => {
console.log(error.message);
// Output after 1000ms: I'm rejecting
});
Таким образом, промисы улучшают поток кода и гибкость. Но есть еще кое-что. Следите за мной и следите за обновлениями!