Учитывая, что у меня есть код, который использует обратные вызовы, и я пытаюсь заключить его в обещания, является ли следующий код ошибкой или антипаттерном?
function getDateAsync(onSuccess, onFailure) {
...
}
function getValidDate() {
return new Promise((resolve, reject) => {
getDateAsync((date) => {
checkValidDate(date, resolve, reject);
}, () => {
markDateInvalid();
reject();
}
});
}
function checkValidDate(date, resolve, reject) {
if (isValid(date)) {
resolve(date);
} else {
markDateInvalid();
reject();
}
}
function markDateInvalid() { ... }
Это предполагает, что checkValidDate является более сложным и не может быть встроенным, и что markDateInvalid необходимо вызывать в обоих указанных экземплярах.
Есть ли лучший способ написать этот код?
Обновление: ради этого примера мы должны также предположить, что getDateAsync является внешней библиотекой или является иным дорогостоящим и невозможным для преобразования в использование Promises.