Для начала вы смешиваете 2 понятия, которые достигают одного и того же, создания Обещания. Вы смешиваете async/await
и new Promise
.
Это фактически делает вас похожими на двух связанных Обещаний.
Почему программа останавливается, когда reject () не вызывается?
Поскольку вы возвращаете Обещание, а это само по себе требует, чтобы были вызваны обратные вызовы для разрешения или отклонения.
Если ошибка вызвана тем, что она не вызывается обработчик необработанных исключений?
Фактической ошибки нет, единственное, что происходит, - это то, что ваше условие if не выполнено.
Как игнорировать ошибка, когда обещание не может выполнить свой код?
Опять же, обещание не перестает запускать свой код, вы не понимаете концепцию.
Чтобы упростить его либо используйте что-то вроде:
function CreateSession(){
return new Promise((resolve, reject) => {
if( <yourconditionhere> ){
resolve(res);
}else{
reject(error);
}
});
}
CreateSession
.then((res) => {
// code to execute in case of success (resolve)
// receiving as argument the argument of the resolve call.
AnotherCode();
})
.catch( error => {
// code to execute in case of non-success (reject)
// receiving as argument the argument of the reject call.
});
или
async function CreateSession(){
let res = await request(options, function (error, response, body) {
if( <yourconditionhere> ){
return ...;
}else{
return ...;
}
}
return res;
}
async function MyFunction()
{
var sessionId = await CreateSession();
AnotherCode();
}