Hey Roland, Just wanted to give you an update on this. I talked to the router folks and getting the router to run in a WebWorker requires a bit more work than I initially anticipated. We've got the design sketched out though and should be able to implement it this week.
On Monday, August 10, 2015 at 10:50:07 AM UTC-7, Jason Teplitz wrote: > > Unfortunately, it is necessary to do that right now because some of our > dependencies assume that those things are set on the window object. The > long term plan is to move that into the framework ( > https://github.com/angular/angular/issues/3207), but at the moment we > need to overwrite that object before loading any dependencies. > > On Monday, August 10, 2015 at 10:39:42 AM UTC-7, Roland Groza wrote: >> >> I figured that there was no support for Router yet, perhaps is because >> the location object is available in web workers. Anyway, I'll try to remove >> the routing and see how that works out as for now I only have one route >> anyway. >> >> But I am a bit puzzled why is the window object overwritten: >> >> window = { >> setTimeout: setTimeout, >> Map: Map, >> Set: Set, >> Array: Array, >> Reflect: Reflect, >> RegExp: RegExp, >> Promise: Promise, >> Date: Date, >> zone: zone >> }; >> assert = function() {}; >> >> According to MDN, a few of those object are actually exposed to a web >> worker: >> https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers >> >> (right at the bottom of the page). Is it really necessary to do the above? >> >> >> On Monday, August 10, 2015 at 7:25:52 PM UTC+2, Jason Teplitz wrote: >>> >>> Hey Roland, >>> >>> Glad to hear you're working on a WebWorker app! Just so you know, >>> WebWorker support in angular is currently under heavy development and >>> definitely not ready for prime time, but you're more than welcome to play >>> around with it. I'd recommend using angular directly from source (npm >>> install from our github repo: github.com/angular/angular) since we >>> haven't got all the WebWorkers files bundled up properly for npm yet as you >>> discovered with the zone-microtask file. >>> >>> Unfortunately, right now it looks like the Router isn't compatible with >>> a WebWorker app. I've made an issue for this ( >>> https://github.com/angular/angular/issues/3563), and am going to try to >>> look into it today. For now though, if you'd like to run your app in a >>> WebWorker it looks like you can't use the router. I'll update this post if >>> I discover any other workaround. >>> >>> Let me know if you have any more WebWorker questions! >>> >>> On Saturday, August 8, 2015 at 12:50:49 AM UTC-7, Roland Groza wrote: >>>> >>>> I've just tried to have this <https://github.com/rolandjitsu/ng2-play> >>>> app running in a web worker by following the example >>>> <https://github.com/angular/angular/tree/master/modules/examples/src/web_workers/kitchen_sink> >>>> >>>> on the angular repo, but I am not sure if I use the npm distribution >>>> and I set up an app as the example, do I need the >>>> zone-microtask-web-workers.js >>>> <https://github.com/angular/angular/blob/master/modules/examples/src/assets/zone-microtask-web-workers.js> >>>> that is used in the examples folder? >>>> >>>> >>>> Because I am a bit confused about SCRIPTS.js >>>> <https://github.com/angular/angular/blob/master/tools/broccoli/js-replace/SCRIPTS.js> >>>> 's importScripts which does import the script I mentioned above and I >>>> cannot seem to find it within the npm distribution. >>>> >>>> >>>> After I manage to set it up though using the >>>> zone-microtask-web-workers.js from the main repo, I did get an exception >>>> from the Router: >>>> >>>> >>>> EXCEPTION: Error during instantiation of LocationStrategy! (App -> >>>> Router -> Location -> LocationStrategy). >>>> ORIGINAL EXCEPTION: TypeError: Cannot read property 'getLocation' of >>>> undefined >>>> ORIGINAL STACKTRACE: >>>> TypeError: Cannot read property 'getLocation' of undefined >>>> at new HashLocationStrategy >>>> (:8000/lib/angular2/src/router/hash_location_strategy.js:26) >>>> at eval (reflection_capabilities.js:12) >>>> at Injector._new (injector.js:555) >>>> at InjectorDynamicStrategy.getObjByKeyId (injector.js:301) >>>> at Injector._getByKeyDefault (injector.js:695) >>>> at Injector._getByKey (injector.js:646) >>>> at Injector._getByDependency (injector.js:632) >>>> at Injector._new (injector.js:524) >>>> at InjectorDynamicStrategy.getObjByKeyId (injector.js:301) >>>> at Injector._getByKeyDefault (injector.js:695) >>>> >>>> >>>> >>>> -- You received this message because you are subscribed to the Google Groups "AngularJS" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/angular. For more options, visit https://groups.google.com/d/optout.
