await fetch()
не загружает весь файл (если он большой). Он читает первый фрагмент файла (в примере, который я рассматривал в отладчике, длина первого фрагмента составляла 16384 байта), извлекает из него заголовки и затем оставляет остальную часть этого первого фрагмента в потоке, ожидая считывания. .
Последующие части файла будут прочитаны после того, как вы выполните .pipe()
и существующий поток будет очищен. Остальная часть файла будет прочитана кусками и записана на диск кусками. Чтобы проверить это, вам нужно будет использовать файл достаточно большого размера, чтобы для его чтения / записи потребовалось несколько фрагментов. читает и записывает, которые происходят после выполнения await fetch()
.
Итак, похоже, что ваш код уже делает то, что вам казалось интересным. Если страница, которую вы загружаете, небольшая (помещается внутри один буфер), вы не увидите множественных операций чтения / записи, потому что весь ответ может быть прочитан за один проход, но для более крупных ответов он определенно будет go частями. Размер блоков также может зависеть от того, как быстро данные прибывают из источника.