ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – webworker中的FormData – 在某些浏览器中 – 这是错的吗?

2019-07-03 01:20:17  阅读:301  来源: 互联网

标签:javascript google-chrome web-worker form-data


我一直在玩网络工作者,并发现在Chrome中工作.但是,在Safari和Firefox中,我得到的FormData未定义.

我发现这很好并且可以预期:如https://stackoverflow.com/a/13970107/1238884中所述,FormData没有定义/支持FormData并实现polyfill. (注意:更新的polyfill @ https://gist.github.com/Rob–W/8b5adedd84c0d36aba64)

但为什么它在Chrome(v39)中有效?它是否有一个错误的实现,或者他们故意放在那里?

解决方法:

自版本36.0.1935.0(crbug.com/360546)以来,Chrome支持Web Workers中的FormData.

它的存在是因为latest specification of FormData要求它暴露给工人的环境. Firefox尚未实现这一点,但它正在他们的雷达上(bugzil.la/739173).

我认为你误读my answer that you’ve linked.新FormData(< HTMLFormElement>);在采用< form>的构造函数的意义上不支持并且不支持基于表单元素初始化其字段,因为< form>显然,不能在Web worker中创建元素.但是您可以创建一个空的FormData对象并根据需要使用它(如果浏览器实现了最新版本的规范).

如果要在所有当前浏览器中使用FormData API,则必须加载我在问题中引用的polyfill.如果检测到FormData API已经定义,则此polyfill会提前返回,因此它不会在已支持FormData的浏览器中引起问题.请注意,与本机FormData API相比,此polyfill效率低,因为polyfill必须预先创建完整的字符串(在内存中),而本机实现只能保存文件的轻量数据结构,并在文件中流式传输文件.文件/ Blob已上传.

对于小块数据,这不是问题,但是如果你打算上传大文件,那么你最好使用postMessage将数据传递给主线程(如果使用类型化数组,则使用transferables)并构造XMLHttpRequest对象那边,发送它. Web Workers主要用于卸载CPU繁重的任务,但XMLHttpRequest主要是网络(它发生在一个单独的IO线程上,至少在Chrome中),因此在这方面使用Web Workers对主线程没有任何好处.

标签:javascript,google-chrome,web-worker,form-data
来源: https://codeday.me/bug/20190703/1361812.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有