Пропустить одно из обещаний, если переменная не определена

У меня есть ситуация, когда я хочу работать с несколькими обещаниями.

Предположим, у меня есть 3 переменные

fileOption, setupOptions, moveOption

основываться на каждой переменной, я запрашиваю функции, такие как

file.validate(token)
    .then((token) => file.create(fileOption))
    .then((file) => setup ? file.getToken(userfromSetup) : Promise.resolve({}))
    .then((token) => setup ? file.setup(setupOptions) : Promise.resolve({}))
    .then((data) => moveOption ? file.getTokenForMove(userFromMove) : Promise.resolve({}))
    .then((token) => moveOption ? file.move(moveOption) : Promise.resolve({}))
    .then((success)=>logger.log(`file created successfully`))
    .catch((err)=>logger.error(`Error`))

Если setupOption не определено, я не хочу получать токен для него и создавать настройки для файла и то же самое для moveOption. Для создания установки мне нужно сначала создать токен и то же самое для перемещения

Так что меня беспокоит то, как пропустить обещания и возвращать ненужные пустые обещания, если указанные выше переменные не определены

1 ответ

 var file_promise = file.validate(token)
.then((token) => file.create(fileOption))
.then((file) => setup ? file.getToken(userfromSetup) : Promise.resolve({}))
.then((token) => setup ? file.setup(setupOptions) : Promise.resolve({}));
if(moveOption){
    file_promise.then((data)=>{file.getTokenForMove(userFromMove)});
}
file_promise.then((token) => moveOption ? file.move(moveOption) : Promise.resolve({}))
.then((success)=>logger.log(`file created successfully`))
.catch((err)=>logger.error(`Error`));

Вы можете просто использовать переменную и регулярные условные операторы, чтобы связать, или нет, обещания.

Проблема, которая может возникнуть из-за этого, состоит в том, что каждый шаг не может быть уверен в том, что он получит, но ваш код создает параметры для функций, вызываемых в then(), но они не используют их, поэтому он не должен вызывать никаких проблем. Иначе, вы бы поступили точно так же, как вы делаете, и решили бы со значением по умолчанию или чем-то еще.

Другие вопросы по тегам