Javascript XMLHttpRequest for file saver的折旧替代方案是什么?
我正在使用react应用程序下载文件Javascript XMLHttpRequest for file saver的折旧替代方案是什么?,javascript,reactjs,filesaver.js,Javascript,Reactjs,Filesaver.js,我正在使用react应用程序下载文件 var FileSaver = require('file-saver'); .. .. .. FileSaver.saveAs(files['file_path'], files['file_title']); 它工作得很好,但几天前它现在显示出一个错误 [Deprecation]主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验产生有害影响。有关更多帮助,请查看。 之所以出现这种情况,是因为FileSaver.js指出了它在何
var FileSaver = require('file-saver');
..
..
..
FileSaver.saveAs(files['file_path'], files['file_title']);
它工作得很好,但几天前它现在显示出一个错误
[Deprecation]主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验产生有害影响。有关更多帮助,请查看。
之所以出现这种情况,是因为FileSaver.js指出了它在何时使用该方法进行请求,而在您的情况下,之所以出现这种情况,是因为您正在从数据库中获取数据
注意:主线程上的同步请求很容易中断
对用户体验的影响,应避免;事实上,许多浏览器
在主线程上完全不推荐使用同步XHR支持。
中允许同步请求
如果我们查看源代码,我们将看到一条注释被设置为false
,以避免弹出阻止程序:
功能已启用(url){
var xhr=newXMLHttpRequest()
//使用同步以避免弹出窗口阻止程序
xhr.open('HEAD',url,false)
...
}
关于此警告,还有一个尚未解决的问题,根本没有回应
我建议您忽略此警告消息,直到它被修复。您始终可以分叉repo并从
xhr.open
调用中删除该asyncfalse
参数。您可以通过从以下位置调用saveAs
来消除警告:
您需要使用文件保护程序吗?您是从外部应用程序下载文件吗?是的,我是从S3下载的,但它仍然显示相同的错误,如果我在程序包文件中更改此项,当程序包更新时,还会再次出现问题。@hu7sy您更改为
xhr.open('HEAD',url,true)
,它仍然显示相同的错误?应用程序中的导入很可能获取一个已编译文件,而不是源文件。如果您不这样更改它,我在回答中指出,您必须分叉repo(进行更改并重新编译),然后使用分叉从package.json
中获取包。
const FileSaver = require('file-saver');
..
..
..
new Promise(resolve => {
resolve(FileSaver.saveAs(files['file_path'], files['file_title']));
})
.then(result => console.log("Done downloading") )
.catch(err => console.log("Error downloading: " + err));