栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

下载大尺寸json时如何解决Uncaught RangeError

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

下载大尺寸json时如何解决Uncaught RangeError

您可以使用

fetch()
Response.body.getReader()
它返回一个
ReadableStream
TextDeprer()
Blob()
URL.createObjectURL()

注意,在设备具有有限的

RAM
或较低的可用磁盘空间,点击后
Save
Save File
对话框4分钟二十秒
4:20
经过的前
SaveFile
对话关闭,随后是附加的一分钟,30秒
1:30
的前
.crdownload
延伸部,从在文件管理器GUI的文件中删除。在第一个
4:20
将文件下载到文件系统并且
SaveFile
可以看到对话框的时期,鼠标指针是可移动的,尽管UI暂时不响应单击或尝试更改选项卡。当
SaveFile
对话框关闭并且文件仍在下载到文件系统时,扩展后
.crdownload
的UI会恢复正常功能。

在上述过程结束时,文件已成功下载到本地文件系统,总大小为

189.8 MB (189,778,220 bytes)

<!DOCTYPE html><html><head>  <style>    pre {      color:navy;      background-color:#eee;      padding:2px;    }  </style></head><body>  <button>Request File</button><br>  <progress min="0" max="189778220" value="0"></progress>  <output></output>  <br><br>  <label></label>  <script>    var url = "https://raw.githubusercontent.com/zemirco/sf-city-lots-json/master/citylots.json";    var button = document.querySelector("button");    var progress = document.querySelector("progress");    var label = document.querySelector("label");    var output = document.querySelector("output");    var request = (url) => {      label.innerHTML = `Requesting <pre>${url}</pre> at ${new Date()}.<br><br>`;      return fetch(url)      .then(response => response.body.getReader())      .then(reader => {        var deprer = new TextDeprer();        var json = "";        label.innerHTML += `Request successful.<br><br>Reading request body at ${new Date()}.<br><br>`;        return reader.read().then(function processData(result) { if (result.done) {   // do stuff when `reader` is `closed`   return reader.closed.then(function() {     // return `json` string     return json;   }); }; json += deprer.depre(result.value); output.innerHTML = ` ${json.length} of ${progress.max} bytes read`; progress.value = json.length; return reader.read().then(processData)          })          .then(function(data) { var message = `Reading of <pre>${url}</pre> complete at ${new Date()}. <br><br>`         + `${data.length} total bytes read. `         + `Please allow up to 4 minutes for file to download `         + `to filesystem after clicking <pre>Save</pre>.<br><br>`; label.innerHTML += message; var blob = new Blob([data], {   type: "application/json" }); var file = URL.createObjectURL(blob); var a = document.createElement("a"); a.download = "citylots.json"; a.href = file; document.body.appendChild(a); a.click(); var closeBlob = (e) => {   window.removeEventListener("focus", closeBlob);   blob.close();   URL.revokeObjectURL(file); }; window.addEventListener("focus", closeBlob); return message.replace(/<[^>]*>/g, "");          })          .catch(function(err) { console.log("err", err)          })      });    }    var handleRequest = (e) => {      button.setAttribute("disabled", "disabled");      request(url).then(function(message) {        console.log(message);        button.removeAttribute("disabled");      })    };    button.addEventListener("click", handleRequest);  </script></body></html>

plnkr
https://plnkr.co/edit/gewixzHZSKRXquZ2OVF2?p=preview



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410103.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号