У меня есть существующий код, который выполняет обещание.
Я добавляю новый шаг в процесс, который должен произойти до него, но условно.
До:
let promise_manipulate_files = util.promisify(_async.eachOfLimit)(fs.readdirSync(directory), 5, (f, _i, cb) => { ... })
После (этот код неверен):
if (filesNeedToBeRenamed()) {
let promise_rename_files = Promise.all(fs.readdirSync(directory).map(
file => util.promisify(fs.rename)(file, amendedFilename(file))
.catch({ ... })
));
}
let promise_manipulate_files = util.promisify(_async.eachOfLimit)(fs.readdirSync(directory), 5, (f, _i, cb) => { ... })
Проблема заключается в том, что второе обещание не должно начинаться до первогоОбещание полностью закончено.
Это верхний уровень моего сценария.
Является ли единственный практический способ получить то, что я хочу, чтобы обернуть весь код в async () => {}
замыкание и await
в первом обещании?
Причина в том, что пример немногоболее сложным, чем это может быть минимально, потому что, если я покажу минимальный пример, то совершенно очевидно, что операции должны выполняться синхронно.На самом деле я пытаюсь навязать особый вид синхронной границы для этих задач.
Я считаю, что суть проблемы заключается в том, что условие if
не дает мне возможности напрямую связать manipulate_files
сrename_files
с помощью .then()
!