Вы можете использовать map()
с вашим массивом files
, чтобы получить одно обещание для каждого файла. Затем вы можете позвонить Promise.all()
, чтобы узнать, когда они все были загружены.
Поскольку мы ничего не знаем о вашем client.download()
методе, мы предполагаем, что он делает то, что должен. Странно, что обратный вызов не принимает параметр с фактическими данными файла.
let promises = files.map(file => {
return new Promise((resolve, reject) => {
client.download(`/${file}`, `./${file}`, () => {
// should this call back have some data or error checking?
console.log(`Downloaded: ${file}`);
});
})
})
Promise.all(promises)
.then(() => console.log("all done"))
Поскольку это происходит внутри другого then()
, вы можете просто вернуть Promise.all(promises)
, чтобы обработать его вниз по течению.