JavaScript Promise 封装下载函数并弹出提示框 - 代码示例
"使用 Promise 封装一个下载函数,下载完成后会弹出一个提示框:\n\njavascript\nfunction download(url) {\n return new Promise(function(resolve, reject) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'blob';\n\n xhr.onload = function() {\n if (xhr.status === 200) {\n const blob = new Blob([xhr.response]);\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = 'downloaded_file';\n a.click();\n URL.revokeObjectURL(url);\n resolve();\n } else {\n reject(new Error(xhr.statusText));\n } \n };\n\n xhr.onerror = function() {\n reject(new Error('Network Error'));\n };\n\n xhr.send();\n });\n}\n\ndownload('http://example.com/file.jpg')\n .then(function() {\n alert('下载完成');\n })\n .catch(function(error) {\n console.error(error);\n });\n\n\n这个函数使用 XMLHttpRequest 发起 GET 请求,并将 responseType 设置为 'blob',以便获取到文件的二进制数据。然后,根据请求的状态码判断下载是否成功,成功后将文件保存到一个 Blob 对象中,创建一个下载链接,模拟点击下载链接,完成下载。最后,使用 resolve 将 Promise 设置为成功状态,或者使用 reject 将 Promise 设置为失败状态。在调用 download 函数时,可以使用 then 方法指定下载完成后的操作,或者使用 catch 方法处理下载失败的情况。
原文地址: https://www.cveoy.top/t/topic/qvf6 著作权归作者所有。请勿转载和采集!