Sto usando AngularJS Seed e voglio vedere un'implementazione funzionante di un Web Worker.Come utilizzare un web worker in AngularJS?
Voglio far funzionare un semplice Web Worker per comprenderlo, ma sto riscontrando un problema con la funzionalità.
Ho il codice Web Worker nei services.js in questo modo:
'use strict';
/* Services */
var app = angular.module('myApp.services', []).
app.factory("HelloWorldService",['$q',function($q){
var worker = new Worker('js/doWork.js');
var defer;
worker.addEventListener('message', function(e) {
console.log('Worker said: ', e.data);
defer.resolve(e.data);
}, false);
return {
doWork : function(myData){
defer = $q.defer();
worker.postMessage(myData); // Send data to our worker.
return defer.promise;
}
};
}]);
Negli js cartella Ho un file doWork.js ei suoi contenuti sono:
self.addEventListener('message', function(e) {
self.postMessage(e.data);
}, false);
Il mio controller.js il file è vuoto e sembra che sia:
'use strict';
/* Controllers */
var app = angular.module("myApp.controllers",[]);
app.controller('MyCtrl1', [ '$scope', function($scope) {
}]).controller('MyCtrl2', [ '$scope', function($scope) {
}]);
Quello che voglio è vedere l'output del Web Worker.
L'errore che ottengo con questa configurazione è:
Uncaught TypeError: Impossibile chiamare il metodo 'fabbrica' di indefinito
ho fissato questo errore, grazie! Nessun errore più, ma continuo a non vedere il messaggio dal mio Web Worker. Nulla si apre nella console per verificare che il Web Worker abbia fatto qualcosa. – acudars
Hai detto al lavoratore di fare qualcosa? Potrebbe essere solo seduto e ti aspetta. Devi inserire il tuo $ HelloWorldService in un controller e chiamare $ HelloWorldService.doWork ("qualcosa"). 'app.controller ('MyCtrl1', [ '$ portata', '$ HelloWorldService', function ($ portata, $ HelloWorldService) {$ HelloWorldService.doWork ("qualcosa"); }]). Controllore ("MyCtrl2", ["$ scope", function ($ scope) { }]); ' – coreyb