Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AngularJS promise in app.run() [duplicate]

I'm working on angularJs and typescript project. I have to make synchronous http call and get some data from server before I launch my client app and load UI. I search on internet and see everybody speak about promise, huumm okay why not. So I use promise (make $http call and use $q to return promise) in my app.run(). Maybe I'm missing nothing because this is not working at all. Angular launch app.config(), then app.run(), ... But Angular does not wait app.config() finish before launch app.run(). So my first promise is launch in app.run() and before it resolve Angular try to instantiate controller... I don't want to create new service call httpSynchronous but I haven't any other ideas.

like image 348
Felix_Billon Avatar asked Feb 19 '15 14:02

Felix_Billon


1 Answers

Angular does not support asynchronous actions in .config and .run functions. If you want to delay your application, there are 2 ways:

  • The first one is to delay your whole application by using angular.bootstrap() to manually start it. But anything you do is outside angular, so you don't have access to anything but vanilla JavaScript.
  • The second one is to use the resolve property of your routes. If you use a router like angular route segment or ui router, you can define a top route / state with a resolve which would be resolved when your application loads (and if you force a full reload of your route).
like image 90
Thomas Roch Avatar answered Nov 19 '22 15:11

Thomas Roch