Как я могу рассчитать полученные данные после приостановки и возобновления функции.
Я работаю над загрузкой файлов, включая паузу и возобновление загрузки.
Он делает паузу в порядке, но когда я возобновляю его, он не доходит до 100%. он останавливается до 100%
function download_file(event, filename) {
req2 = request({
method: 'GET',
uri: fileURL
});
var out = fs.createWriteStream(finalPath);
req2.pipe(out);
req2.on('response', function(data) {
total_bytes = parseInt(data.headers['content-length']);
progressBar.max = total_bytes;
total_size = total_bytes;
});
req2.on('data', function(chunk) {
received_bytes += chunk.length;
console.info(received_bytes);
progressBar.value = received_bytes;
display.innerText = Math.round((progressBar.value / progressBar.max) * 1000) / 10 + '%'
}
});
};
function pause22() {
console.info('pause function called');
req2.pause();
}
function resume22() {
console.info('RESUME function called');
progressBar.max=progressBar.max-progressBar.value;
console.info(progressBar.max);
console.info(progressBar.value);
progressBar.value = received_bytes;
received_bytes= progressBar.value;
req2.resume();
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Предполагая, что вы хотите продолжить загрузку с того места, на котором остановились, и что вы сохраняете «total_bytes» и «received_bytes» в качестве глобальных переменных, тогда ваш индикатор выполнения просто восстановит их. Ваше резюме22 должно быть...
function resume22() {
console.info('RESUME function called');
progressBar.max=total_bytes;
console.info(progressBar.max);
progressBar.value = received_bytes;
console.info(progressBar.value);
req2.resume();
}
Он начинается с 11% после того, как вы приостановили его на 11%? Также мне интересно, есть ли буферизация в потоке загрузки, которая влияет на воспринимаемый прогресс. Проверяйте глобальные переменные при входе в функцию Pause, чтобы убедиться, что они соответствуют вашим ожиданиям.
да, именно этого я и хочу! Во-первых, спасибо за ваш ответ! К сожалению, ваш код не работает.. когда я останавливаюсь на 11% и возобновляю работу через 1 минуту, он заканчивается на 36%.