You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ما تکههای پاسخ را در آرایهی `chunks` جمع میکنیم. این مهم است چون بعد از مصرف شدن پاسخ، دیگر نمیتوان آن را دوباره با `response.json()` یا روشهای مشابه خواند (اگر امتحان کنید خطا خواهید گرفت).
98
98
4. در پایان، ما `chunks` را داریم -- آرایهای از قطعات بایت `Uint8Array`. باید آنها را به یک خروجی واحد تبدیل کنیم. متأسفانه متد مستقیمی برای اتصال آنها وجود ندارد، بنابراین این کار را دستی انجام میدهیم:
99
-
1. یک `Uint8Array` جدید با طول کل ایجاد میکنیم: `chunksAll = new Uint8Array(receivedLength)`
100
-
2. سپس با `.set(chunk, position)` هر قطعه را پشت سر هم داخل آن کپی میکنیم.
99
+
1. یک `Uint8Array` جدید با طول کل ایجاد میکنیم: `chunksAll = new Uint8Array(receivedLength)`
100
+
2. سپس با `.set(chunk, position)` هر قطعه را پشت سر هم داخل آن کپی میکنیم.
101
101
5. در نهایت دادهی نهایی در `chunksAll` قرار دارد، اما هنوز رشته نیست.
102
102
103
103
برای تبدیل به رشته، باید این بایتها را تفسیر کنیم. کلاس داخلی [TextDecoder](info:text-decoder) دقیقاً همین کار را انجام میدهد. سپس در صورت نیاز میتوانیم آن را با `JSON.parse` تبدیل کنیم.
104
104
105
-
اگر به جای رشته دادهی باینری بخواهیم، کار سادهتر است: کافی است مراحل 4 و 5 را با یک خط جایگزین کنیم:
106
-
```js
107
-
let blob =newBlob(chunks);
108
-
```
105
+
اگر به جای رشته دادهی باینری بخواهیم، کار سادهتر است: کافی است مراحل 4 و 5 را با یک خط جایگزین کنیم:
106
+
```js
107
+
let blob =newBlob(chunks);
108
+
```
109
109
110
110
در نهایت ما نتیجه را (به صورت رشته یا Blob) داریم و همزمان در طول فرایند، پیشرفت دانلود را هم دنبال میکنیم.
0 commit comments