AngularJs:如何在makepdf中使用web worker

AngularJs:如何在makepdf中使用web worker,angularjs,web-worker,makepdf,Angularjs,Web Worker,Makepdf,有一个解决方案解释了如何在makepdf中使用web worker。但是,我想知道如何使用requirejs将此解决方案应用于angular。 我曾尝试将ngwebworker与requireJs一起用作示例,但没有成功。有人能帮我吗 编辑: 为了使问题更容易可视化,我将在下面的对话框中编辑不起作用的代码: $scope.exportToPDF = function(){

有一个解决方案解释了如何在makepdf中使用web worker。但是,我想知道如何使用requirejs将此解决方案应用于angular。 我曾尝试将ngwebworker与requireJs一起用作示例,但没有成功。有人能帮我吗

编辑: 为了使问题更容易可视化,我将在下面的对话框中编辑不起作用的代码:

                                           $scope.exportToPDF = function(){

                    var list = $rootScope.orderedData;
                        var body = [];

                            var headers = new Array();
                            headers.push({ text: 'A', fillColor: '#0075E5', color: '#ffffff'});
                            headers.push({ text: 'B', fillColor:#0075E5', color: '#ffffff'});
                            headers.push({ text: 'C', fillColor:#0075E5', color: '#ffffff'});
                            headers.push({ text: 'D', fillColor:#0075E5', color: '#ffffff'});
                            headers.push({ text: 'E', fillColor:#0075E5', color: '#ffffff'});
                            headers.push({ text: 'F', fillColor:#0075E5', color: '#ffffff'});
                            body.push(headers);

                            for (var key in list) 
                            {
                                if (list.hasOwnProperty(key)){
                                    var position = list[key];
                                    var fila = new Array();
                                    fila.push( { text: position.a.toString(), fillColor: '#ffffff' } );
                                    fila.push( { text: position.b.toString(), fillColor: '#ffffff'}  );
                                    fila.push( { text: position.c.toString(), fillColor: '#ffffff'} );
                                    fila.push( { text: position.d.toString().substring(0,5) + "...", fillColor: '#ffffff'}  );
                                    fila.push( { text: position.e.toString(), fillColor: '#ffffff'} );
                                    body.push(fila);
                                }
                            }
                            var dd = {
                                    background: [{
                                        width: 30,
                                        alignment: 'left'
                                    }],
                                      pageOrientation: 'landscape',
                                      footer: function(currentPage, pageCount) { return currentPage.toString() + '/' + pageCount;},
                                      info: {
                                            title: 'Title',
                                            author: 'Me'
                                          },
                                content: [
                                          { text: 'Text', style: 'header' },
                                    {
                                        style: 'tableHeader',
                                        table: 
                                        {
                                            dontBreakRows: true,
                                            headerRows: 1,
                                            widths: ['5%', '10%', '10%', 'auto', '15%', 'auto', 'auto', '10%', '10%', 'auto', '4%', '10%'],
                                            body: body
                                        }
                                    }
                                ],
                                styles: {
                                    header: {
                                        fontSize: 18,
                                        bold: true,
                                        margin: [0, 0, 0, 10],
                                        alignment: 'center'
                                    },
                                    subheader: {
                                        fontSize: 16,
                                        bold: true,
                                        margin: [0, 10, 0, 5]
                                    },
                                    tableExample: {
                                        margin: [0, 5, 0, 15]
                                    },
                                    tableHeader: {
                                        bold: true,
                                        fontSize: 9,
                                        color: 'black',
                                        margin: [0, 5, 0, 15]
                                    }
                                },
                                defaultStyle: {
                                },
                            };
                              var obj =  pdfMake.createPdf(dd) // FAST PROCESS!

                              var myWorker = Webworker.create(downloadIt);

                              myWorker.run(obj).then(function(body) {
                                });


                   function downloadIt(obj) {
                       obj.download("Title.pdf"); // REALLY SLOW PROCESS THAT SHOULD BE IN BACKGROUND
                   }


                   }

问题在于,要将对象传输给web工作者,他们建议使用JSON.parse和JSON.stringify。然而,如果我在我的对象上使用它,我将失去“下载”方法。有没有一种方法可以将此对象发送到我的函数downloadt,而不丢失pdfmake对象的方法downloadt。。。你能准确地解释一下你尝试了什么以及它是如何不起作用的吗?我刚刚编辑了我的问题。你有什么线索可以解决这个问题吗?“没有成功”。。。你能准确地解释一下你尝试了什么以及它是如何不起作用的吗?我刚刚编辑了我的问题。你有什么线索可以解决这个问题吗?