@@ -91,8 +91,8 @@ var SubtitlesOctopus = function (options) {
9191 // Worker
9292 if ( ! self . worker ) {
9393 self . worker = new Worker ( self . workerUrl ) ;
94- self . worker . onmessage = self . onWorkerMessage ;
95- self . worker . onerror = self . workerError ;
94+ self . worker . addEventListener ( 'message' , self . onWorkerMessage ) ;
95+ self . worker . addEventListener ( 'error' , self . workerError ) ;
9696 }
9797 self . workerActive = false ;
9898 self . createCanvas ( ) ;
@@ -390,13 +390,9 @@ var SubtitlesOctopus = function (options) {
390390 break ;
391391 }
392392 case 'get-events' : {
393- console . log ( data . target ) ;
394- console . log ( data . events ) ;
395393 break ;
396394 }
397395 case 'get-styles' : {
398- console . log ( data . target ) ;
399- console . log ( data . styles ) ;
400396 break ;
401397 }
402398 case 'ready' : {
@@ -558,17 +554,52 @@ var SubtitlesOctopus = function (options) {
558554 }
559555 } ;
560556
557+ self . fetchFromWorker = function ( workerOptions , onSuccess , onError ) {
558+ try {
559+ var target = workerOptions [ 'target' ]
560+
561+ var timeout = setTimeout ( function ( ) {
562+ reject ( Error ( 'Error: Timeout while try to fetch ' + target ) )
563+ } , 5000 )
564+
565+ var resolve = function ( event ) {
566+ if ( event . data . target == target ) {
567+ onSuccess ( event . data )
568+ self . worker . removeEventListener ( 'message' , resolve )
569+ self . worker . removeEventListener ( 'error' , reject )
570+ clearTimeout ( timeout )
571+ }
572+ }
573+
574+ var reject = function ( event ) {
575+ onError ( event )
576+ self . worker . removeEventListener ( 'message' , resolve )
577+ self . worker . removeEventListener ( 'error' , reject )
578+ clearTimeout ( timeout )
579+ }
580+
581+ self . worker . addEventListener ( 'message' , resolve )
582+ self . worker . addEventListener ( 'error' , reject )
583+
584+ self . worker . postMessage ( workerOptions )
585+ } catch ( error ) {
586+ onError ( error )
587+ }
588+ }
589+
561590 self . createEvent = function ( event ) {
562591 self . worker . postMessage ( {
563592 target : 'create-event' ,
564593 event : event
565594 } ) ;
566595 } ;
567596
568- self . getEvents = function ( ) {
569- self . worker . postMessage ( {
597+ self . getEvents = function ( onSuccess , onError ) {
598+ self . fetchFromWorker ( {
570599 target : 'get-events'
571- } ) ;
600+ } , function ( data ) {
601+ onSuccess ( data . events )
602+ } , onError ) ;
572603 } ;
573604
574605 self . setEvent = function ( event , index ) {
@@ -592,11 +623,13 @@ var SubtitlesOctopus = function (options) {
592623 style : style
593624 } ) ;
594625 } ;
595-
596- self . getStyles = function ( ) {
597- self . worker . postMessage ( {
626+
627+ self . getStyles = function ( onSuccess , onError ) {
628+ self . fetchFromWorker ( {
598629 target : 'get-styles'
599- } ) ;
630+ } , function ( data ) {
631+ onSuccess ( data . styles )
632+ } , onError ) ;
600633 } ;
601634
602635 self . setStyle = function ( style , index ) {
0 commit comments