如何在Web Worker上填充DOMParser以供AWS S3 SDK上传使用?

如何在Web Worker上填充DOMParser以供AWS S3 SDK上传使用?

问题描述:

我们使用AWS S3 SDK将文件从浏览器上传到S3存储桶。由于文件的数量和大小可能很大,并会影响UI呈现和交互,因此我们决定将上传过程放到Web Worker线程中。这样用户就可以在我们的单页应用程序上*导航和交互。如何在Web Worker上填充DOMParser以供AWS S3 SDK上传使用?

当我们上传一个小文件时,一切运行良好。问题是S3 SDK尝试上传大文件的时候。它将文件分成几个块并上传每个块。 s3服务器返回一个XML响应,并且S3 SDK尝试使用DOMParser类解析它,这在Web Worker范围中没有定义。

有没有一种方法可以填充DOMParser以使S3 SKD在Web Worker上执行上载?

回答我的问题:

我用jsdombrowserify

jsdom能够填充工具的DOMParser对网络工作者模拟一个窗口环境,并browserify束jsdom要在浏览器上执行(jsdom旨在在nodejs上运行)

它工作得很好。

由于某些版本问题,jsdom没有为我工作。但是我能够通过使用下面的代码来为aws sdk填充DOMParser。

var DOMParser = require('xmldom').DOMParser; 
window.DOMParser = DOMParser; 

然browserify和domparser.js

browserify main.js -o domparser.js 

然后导入domparser.js创建AWS导入之前SDK

importScripts('domparser.js'); 
importScripts('https://sdk.amazonaws.com/js/aws-sdk-2.176.0.js');