Title: 网络请求-3-fetch 下载进度 勘误 · Issue #1246 · javascript-tutorial/zh.javascript.info · GitHub
Open Graph Title: 网络请求-3-fetch 下载进度 勘误 · Issue #1246 · javascript-tutorial/zh.javascript.info
X Title: 网络请求-3-fetch 下载进度 勘误 · Issue #1246 · javascript-tutorial/zh.javascript.info
Description: 原文链接:https://zh.javascript.info/fetch-progress 在Content-Encoding指定了某种压缩方式时,fetch提供的getReader中读取到的是解压缩后的二进制流,而Content-Length所指示的是解压缩前的请求体大小。 在绝大多数场景,浏览器自动指示Accept-Encoding的情况下,不能直接使用Content-Length作为完整报文长度进行进度计算,而应当使用其它方式/响应头告知客户端完整的报文长度。 ...
Open Graph Description: 原文链接:https://zh.javascript.info/fetch-progress 在Content-Encoding指定了某种压缩方式时,fetch提供的getReader中读取到的是解压缩后的二进制流,而Content-Length所指示的是解压缩前的请求体大小。 在绝大多数场景,浏览器自动指示Accept-Encoding的情况下,不能直接使用Content-Length作为...
X Description: 原文链接:https://zh.javascript.info/fetch-progress 在Content-Encoding指定了某种压缩方式时,fetch提供的getReader中读取到的是解压缩后的二进制流,而Content-Length所指示的是解压缩前的请求体大小。 在绝大多数场景,浏览器自动指示Accept-Encoding的情况下,不能直接使用Content-Length作为...
Opengraph URL: https://github.com/javascript-tutorial/zh.javascript.info/issues/1246
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"网络请求-3-fetch 下载进度 勘误","articleBody":"原文链接:https://zh.javascript.info/fetch-progress\n\n在Content-Encoding指定了某种压缩方式时,fetch提供的getReader中读取到的是解压缩*后*的二进制流,而Content-Length所指示的是解压缩前的请求体大小。\n\n在绝大多数场景,浏览器自动指示Accept-Encoding的情况下,不能直接使用Content-Length作为完整报文长度进行进度计算,而应当使用其它方式/响应头告知客户端完整的报文长度。\n\n原文中示例代码如下:\n\n```js\n// Step 1:启动 fetch,并获得一个 reader\nlet response = await fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits?per_page=100');\n\nconst reader = response.body.getReader();\n\n// Step 2:获得总长度(length)\nconst contentLength = +response.headers.get('Content-Length');\n\n// Step 3:读取数据\nlet receivedLength = 0; // 当前接收到了这么多字节\nlet chunks = []; // 接收到的二进制块的数组(包括 body)\nwhile(true) {\n const {done, value} = await reader.read();\n\n if (done) {\n break;\n }\n\n chunks.push(value);\n receivedLength += value.length;\n\n console.log(`Received ${receivedLength} of ${contentLength}`)\n}\n\n// 以下略\n```","author":{"url":"https://github.com/frankli0324","@type":"Person","name":"frankli0324"},"datePublished":"2025-06-07T11:25:27.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/1246/zh.javascript.info/issues/1246"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:40630491-9f5c-9a8a-359b-fecbc402a6d9 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9C2A:6818:14E710:1C583C:696F15AE |
| html-safe-nonce | 41961f28b25db5d6c8e3190fbe7217747caf6e42b9a85692cef08b60c2bc5d9e |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5QzJBOjY4MTg6MTRFNzEwOjFDNTgzQzo2OTZGMTVBRSIsInZpc2l0b3JfaWQiOiIzMjU0NzA1MzA2NDgxOTIzNTAyIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 6b438ba7cb76d4f58c1a46623be8c9879b432eb6abc6f58b65d4662e1e740dea |
| hovercard-subject-tag | issue:3126892359 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/javascript-tutorial/zh.javascript.info/1246/issue_layout |
| twitter:image | https://opengraph.githubassets.com/e1ba941e4eaea6c17f284f84cb6a63ae1fac5351ef9cd9e3d75f5d35622f612f/javascript-tutorial/zh.javascript.info/issues/1246 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/e1ba941e4eaea6c17f284f84cb6a63ae1fac5351ef9cd9e3d75f5d35622f612f/javascript-tutorial/zh.javascript.info/issues/1246 |
| og:image:alt | 原文链接:https://zh.javascript.info/fetch-progress 在Content-Encoding指定了某种压缩方式时,fetch提供的getReader中读取到的是解压缩后的二进制流,而Content-Length所指示的是解压缩前的请求体大小。 在绝大多数场景,浏览器自动指示Accept-Encoding的情况下,不能直接使用Content-Length作为... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | frankli0324 |
| hostname | github.com |
| expected-hostname | github.com |
| None | b278ad162d35332b6de714dfb005de04386c4d92df6475522bef910f491a35ee |
| turbo-cache-control | no-preview |
| go-import | github.com/javascript-tutorial/zh.javascript.info git https://github.com/javascript-tutorial/zh.javascript.info.git |
| octolytics-dimension-user_id | 49552305 |
| octolytics-dimension-user_login | javascript-tutorial |
| octolytics-dimension-repository_id | 128014656 |
| octolytics-dimension-repository_nwo | javascript-tutorial/zh.javascript.info |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 128014656 |
| octolytics-dimension-repository_network_root_nwo | javascript-tutorial/zh.javascript.info |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 39aed5006635ab6f45e6b77d23e73b08a00272a3 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width