Reference: AngularJS in Action
Services are a way to define functionality that’s common to the entire application.
There are five types of services that you can define using the module convenience methods:
Communication with remote servers is facilitated with the
$http service, which has shortcut methods built into it that mirror REST verbs.
$http service is based on a
promise API that provides mechanisms for you to handle asynchronous calls to the server.
Further control over asynchronous operations can be exerted (运用、发挥、施以影响) by using a
deferred object returned by calling
Calls made using
$http can be intercepted by creating an interceptor ad pushing it into the
$httpProvider.interceptors array during the
Services can be enhanced by capturing them in a
$provide.decorator call in the
module.config block and modifying its behavior.
$httpBackend is great for mocking out server-side calls and defining the response.
Manually resolve a promise in a unit test by calling