Это должно быть эквивалентно:
function promiseTry(callback) {
return new Promise((resolve, reject) => {
try {
resolve(callback())
} catch(e) {
reject(e);
}
});
}
const x = promiseTry(() => {
throw new Error('hi');
});
x.then(() => console.log("Promise resolved")).catch(err => console.log("Promise rejected:", err.message));
Если вы можете использовать async/await
, async function
s имеют такое поведение неявно. Любые синхронные исключения, выданные в асинхронной функции c, преобразуются в отклонение обещания.