Кто-нибудь может с этим помочь? Я думаю, что проблема в функции finishDownload, потому что она всегда возвращается до загрузки файлов, и я не могу использовать ожидание перед методом downloadManager. Если есть лучший способ сделать это, пожалуйста, дайте мне знать. Я использую загрузчик nativescript для параллельной загрузки нескольких файлов
let getFiles = async (paths) => {
let downloader = (args) => {
return new Promise((resolve, reject) => {
downloadManager = new Downloader();
let promises = [];
const documents = fs.knownFolders.documents();
args.forEach((data, index) => {
let file = exports.getFileName(data.pageUrl.downloadURL);
let url = data.pageUrl.downloadURL;
//check if this file was downloaded already
const path = fs.path.join(documents.path,file);
const exists = fs.File.exists(path);
if (exists === false) {
let promise = downloadManager.createDownload({
path: fs.knownFolders.documents().path,
fileName: file,
url:url
});
promises.push(promise);
}
});
resolve(promises);
})
}
let finishDownload = async (ids) => {
page.bindingContext.downloadedFiles._array.splice(0);
ids.forEach((data,index) => {
downloadManager
.start(data, (progressData) => {
// console.log(data+" id: download value,",progressData.value);
// console.log(data+" id: download speed,",progressData.speed);
})
.then(completed => {
console.log(`downloaded File path: ${completed.path}`);
}).catch(error => {
console.log("downloadManager error: ",error.message);
});
})
//this is always returned, even before files are downloaded.
return "done";
}
let y = await downloader(paths);
let x = await finishDownload(y);
if (x === "done") {
console.log("are we now finished!!!!!!!!");
hideLoading();
console.dir("all files are now downloaded and about to be saved!!!");
let file = exports.getFileName(page.navigationContext.pages[0].pageUrl.downloadURL);
//check if this file was downloaded already
let documents = fs.knownFolders.documents();
const path = fs.path.join(documents.path,file);
const exists = fs.File.exists(path);
if (exists) {
modalContentButton.class = "modal-content-button-active";
}
}
}