وقتی Axios یک درخواست Node را با responseType: 'stream' حل می‌کند، بدنه آماده مصرف است. اما پرونده هنوز کامل نشده است. منتظر انتقال به مقصد آن بمانید:

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));

این از یک کلاینت از پیش پیکربندی‌شده استفاده می‌کند. آداپتر آن باید پراکسی یا عامل SOCKS انتخاب‌شده را پشتیبانی کند؛ گزینه پراکسی HTTP تعبیه‌شده در Axios و عامل SOCKS دو سازوکار جداگانه‌اند. برنامه URL، مهلت‌های زمانی و سیاست لغو را تأمین می‌کند.

از یک مسیر موقت که متعلق به این عملیات است استفاده کنید. پیش از ایجاد جریان نوشتن تصمیم بگیرید که برخوردها چگونه مدیریت شوند، تا پاک‌سازی پس از خطا پروندهٔ دیگری را حذف نکند. ازسرگیری عامدانه سیاست خودش را می‌خواهد.

pipeline خواندن و نوشتن را هماهنگ می‌کند و خطای آن‌ها را گزارش می‌دهد. فراخوانی response.data.pipe(file) و ثبت فوری موفقیت، آن نقطهٔ تکمیل را دور می‌زند. قطع شبکه یا پر شدن دیسک می‌تواند پس از رسیدن یک پاسخ معتبر HTTP رخ دهد؛ زمینهٔ پاسخ و خطایی را که پردازش را متوقف کرد نگه دارید.

پس از موفقیت پردازش مورد انتظار، بررسی‌های مصنوع برنامه را انجام دهید و سپس نام نهایی را منتشر کنید. تکمیل یعنی جریان تحت این APIها مصرف و نوشته شده است، نه اینکه همان انتشار یا سند مورد انتظار است. در صورت خطا یا لغو، پروندهٔ ناقص را بر اساس سیاست ازسرگیری انتخاب‌شده نگه دارید یا حذف کنید. یک سیگنال لغو می‌تواند درخواست و عملیات جریان مربوط را متوقف کند؛ اما تصمیم نمی‌گیرد که برنامه با خروجی چه کند.

مقالات مرتبط