К сожалению стандартного API нет для того чтобы получить данные о текущих закачках. Потому как вариант можно отслеживать наличие файлов с расширением crdownload:
save_path="X:\\new\\";
async function sys_sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
};
(async () => {
const fs = require('fs');
yet=true;
while (yet==true) {
console.log("--ждём пока не закончатся все закачки...");
fs.readdir(save_path, (err, files) => {
cnt=0;
files.forEach(file => {
console.log(file);
if (file.indexOf('down')>0){cnt++;};
});
if (cnt==0){
console.log("Дождались..");
yet=false;
};
});
await sys_sleep(1000);
};
})();
Лень двигатель прогресса (с). В одной из задач, используется довольно большое количество однотипных окон с вопросами и кнопками -Да, Нет, Ок и т.д. Чтобы не рисовать каждый раз эти окна руками в коде html, можно поступить лучше: оформить создание диалогового окна «на лету» с вызовом пользовательской функции по нажатию какой-то из кнопок.
Задача: из некого массива данных создать файл и предложить его к закачке пользователем, без участия серверной части.
Решение: Для создания файла воспользуемся функцией Blob, которая позволяет оперировать с бинарными данными. Далее создадим в DOM элемент <a>, поместим в href бинарные данные и сэмулируем нажатие на ссылку. Примерно так:
//собираем csv файл
csv="OKPU;P1;P2;\n";
data.result.forEach(function(entry) {
csv=csv+entry.okpu+";"+entry.P1+";"+entry.P2+"\n";
});
let a = document.createElement("a");
let file = new Blob([csv], {type: 'application/csv'});
a.href = URL.createObjectURL(file);
a.download = "sender_okpu_data.csv";
a.click();