Kai Axios išsprendžia Node užklausą su responseType: 'stream', kūnas paruoštas naudoti. Tačiau failas dar nebaigtas. Palaukite perkėlimo į jo paskirties vietą:

import { createWriteStream } from 'node:fs';
import { pipeline } from 'node:stream/promises';

const response = await client.get(url, { responseType: 'stream' });
await pipeline(response.data, createWriteStream(partPath));

Tai naudoja jau sukonfigūruotą klientą. Jo adapteris turi palaikyti pasirinktą tarpinį serverį arba SOCKS agentą; „Axios“ įtaisytasis HTTP tarpinio serverio variantas ir SOCKS agentas yra atskiri mechanizmai. Programėlė pateikia URL, laiko limitus ir atšaukimo politiką.

Naudokite laikiną kelią, priklausantį šiai operacijai. Nuspręskite, kaip tvarkyti susidūrimus, prieš kurdami rašymo srautą, kad valymas po klaidos nepašalintų kito žmogaus failo. Sąmoningam tęsimui reikia atskiros politikos.

pipeline derina skaitymą ir rašymą bei praneša apie jų klaidą. response.data.pipe(file) iškvietimas ir nedelsiant užregistruota sėkmė praleidžia tą užbaigimo tašką. Tinklo sutrikimas ar pilnas diskas gali įvykti po to, kai atėjo galiojantis HTTP atsakymas; išsaugokite atsakymo kontekstą ir klaidą, kuri sustabdė apdorojimą.

Kai laukiamas apdorojimas pavyks, atlikite programėlės artefakto patikras ir tada paskelbkite galutinį pavadinimą. Užbaigimas reiškia, kad srautas buvo sunaudotas ir įrašytas pagal šiuos API, o ne tai, kad tai laukiama laida ar dokumentas. Nepavykus ar atšaukus, dalinį failą palikite arba pašalinkite pagal pasirinktą tęsimo politiką. Atšaukimo signalas gali sustabdyti atitinkamą užklausą ir srauto operacijas; jis nenusprendžia, ką programėlė turi daryti su išvestimi.

Susiję straipsniai