Используйте Promise
с для этого вида работ:
function fn(callback) {
let promises = [];
if (condition1) {
promises.push(new Promise(resolve => otherFunction1(resolve)));
}
if (condition2) {
promises.push(new Promise(resolve => otherFunction2(resolve)));
}
Promise.all(promises).then(callback);
}
Если promises
пусто (из-за сбоя как condition1
, так и condition2
), то обещание, возвращаемое Promise.all(promises)
, будет разрешено немедленно и, следовательно, callback
будет вызвано немедленно.