Я не знаю, может быть, это антипаттерн.Абстрактная функция, чтобы позволить возвращать обещания или обратный вызов
Скоро очень молодые разработчики присоединятся к нашей команде разработчиков, и я хотел бы позволить им выбрать, хотите ли они использовать модуль с обратным вызовом или шаблоном обещаний.
Эта функция в основном сохраняет данные в базе данных. Я повторяю поток db.insert, чтобы абстрагировать функцию, но есть ли другой способ сделать это?
function create(data, callback) {
if(callback) {
db.insert(data, function(err, doc) {
return callback(err, doc);
});
} else {
return new Promise(function(res, rej) {
db.insert(data, function(err, doc) {
if(err) {
return reject(err);
}
return resolve(doc);
});
});
}
}
Я бы не стал называть это анти-шаблоном. Многие библиотеки работают таким образом. Однако я бы избегал смешивать обещания и обратные вызовы в одной и той же кодовой базе, вместо того, чтобы позволить отдельным разработчикам решать. Если ваш новый разработчик не устраивает обещания, он/она должен их изучить. –