Написал небольшой пример, никак не могу додуматься, как заставить это работать и правильно ловить ошибки. Функцию helper3(next)
нельзя менять. Подскажите как исправить.
function helper(error, results) {
return new Promise((resolve, reject) => {
if (error) reject(error);
if (results) resolve(results);
});
}
function helper3(next) {
next('err', 'eee');
}
function helper2() {
return new Promise((resolve, reject) => {
resolve(helper3(helper));
});
}
helper2().then(res => console.log('1', res)).catch(err => console.log('2', err));
Так как внутри helper2
Promise всегда успешно завершен, нет возможности попасть в catch.
Для исправления нужно, чтобы вызывались и resolve
и reject
параметры.
Так как они должны вызываться в соответствии с результатами helper
, то и передавать их надо в продолжение helper
. Для передачи, нужно вызвать then
, но чтобы вызвать then
, нужно вызвать саму функцию helper
.
Для решение, нужно обернуть вызов в функцию:
helper3((err, succ) => helper(err, succ).then(resolve, reject))
Пример в сборе:
function helper(error, results) {
return new Promise((resolve, reject) => {
if (error) reject(error);
if (results) resolve(results);
});
}
function helper3(next) {
next('error', 'eee');
}
function helper2() {
return new Promise((resolve, reject) => {
helper3((err, succ) => helper(err, succ).then(resolve, reject));
});
}
helper2().then(res => console.log('1', res)).catch(err => console.log('2', err));
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите как сделать так чтоб ссылка появлялась в определенное время и потом скрывалась тоесть будет проводится мероприятие в одно и то же время...