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: github.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:807dbba2-e46f-ae3c-720b-9dcdf45e436a |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C830:59070:1334C54:1AE8C02:696FCC82 |
| html-safe-nonce | 13fc00e5898a392b94a564fbf8ad9ec4e045a3d62a6adab915b7a86f9496f147 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDODMwOjU5MDcwOjEzMzRDNTQ6MUFFOEMwMjo2OTZGQ0M4MiIsInZpc2l0b3JfaWQiOiI4MDE0ODA4MTU0NjYwMzkyMDY2IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 956dfa7e917de22e7ef906a994f0acf7da75a31b800b81457c1c1608ab595907 |
| 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 | 0a44b41159f8508d767a50a41d4355b6e6607de801262664cbe75414886e44e9 |
| 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 | 347f3ebfaef84b36b267c7a20bade84594f267d5 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width