mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-01-12 22:45:52 +08:00
fix($defer): remove deprecated $defer service
This commit is contained in:
1
angularFiles.js
vendored
1
angularFiles.js
vendored
@@ -13,7 +13,6 @@ angularFiles = {
|
||||
'src/ng/cacheFactory.js',
|
||||
'src/ng/compile.js',
|
||||
'src/ng/controller.js',
|
||||
'src/ng/defer.js',
|
||||
'src/ng/document.js',
|
||||
'src/ng/exceptionHandler.js',
|
||||
'src/ng/interpolate.js',
|
||||
|
||||
@@ -50,7 +50,7 @@ provided by Angular's web framework:
|
||||
* @param {*} message Message to be logged.
|
||||
*/
|
||||
function batchLogModule($provide){
|
||||
$provide.factory('batchLog', ['$defer', '$log', function($defer, $log) {
|
||||
$provide.factory('batchLog', ['$timeout', '$log', function($timeout, $log) {
|
||||
var messageQueue = [];
|
||||
|
||||
function log() {
|
||||
@@ -58,7 +58,7 @@ provided by Angular's web framework:
|
||||
$log('batchLog messages: ', messageQueue);
|
||||
messageQueue = [];
|
||||
}
|
||||
$defer(log, 50000);
|
||||
$timeout(log, 50000);
|
||||
}
|
||||
|
||||
// start periodic checking
|
||||
@@ -88,7 +88,7 @@ provided by Angular's web framework:
|
||||
|
||||
Things to notice in this example:
|
||||
|
||||
* The `batchLog` service depends on the built-in {@link api/ng.$defer $defer} and
|
||||
* The `batchLog` service depends on the built-in {@link api/ng.$timeout $timeout} and
|
||||
{@link api/ng.$log $log} services, and allows messages to be logged into the
|
||||
`console.log` in batches.
|
||||
* The `routeTemplateMonitor` service depends on the built-in {@link api/ng.$route
|
||||
|
||||
@@ -259,7 +259,7 @@ the `$digest` phase. This delay is desirable, since it coalesces multiple model
|
||||
api/ng.$rootScope.Scope#$apply scope.$apply()}. (Angular apis do this
|
||||
implicitly, so no extra `$apply` call is needed when doing synchronous work in controllers,
|
||||
or asynchronous work with {@link api/ng.$http $http} or {@link
|
||||
api/ng.$defer $defer} services.
|
||||
api/ng.$timeout $timeout} services.
|
||||
|
||||
4. **Mutation observation**
|
||||
|
||||
|
||||
@@ -109,7 +109,6 @@ function publishExternalAPI(angular){
|
||||
$browser: $BrowserProvider,
|
||||
$cacheFactory: $CacheFactoryProvider,
|
||||
$controller: $ControllerProvider,
|
||||
$defer: $DeferProvider,
|
||||
$document: $DocumentProvider,
|
||||
$exceptionHandler: $ExceptionHandlerProvider,
|
||||
$filter: $FilterProvider,
|
||||
|
||||
2
src/bootstrap/bootstrap-prettify.js
vendored
2
src/bootstrap/bootstrap-prettify.js
vendored
@@ -198,7 +198,7 @@ directive.ngEmbedApp = ['$templateCache', '$browser', '$rootScope', '$location',
|
||||
}];
|
||||
this.html5Mode = angular.noop;
|
||||
});
|
||||
$provide.decorator('$defer', ['$rootScope', '$delegate', function($rootScope, $delegate) {
|
||||
$provide.decorator('$timeout', ['$rootScope', '$delegate', function($rootScope, $delegate) {
|
||||
return angular.extend(function(fn, delay) {
|
||||
if (delay && delay > 50) {
|
||||
return setTimeout(function() {
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* @ngdoc function
|
||||
* @name ng.$defer
|
||||
* @deprecated Made obsolete by $timeout service. Please migrate your code. This service will be
|
||||
* removed with 1.0 final.
|
||||
* @requires $browser
|
||||
*
|
||||
* @description
|
||||
* Delegates to {@link ng.$browser#defer $browser.defer}, but wraps the `fn` function
|
||||
* into a try/catch block and delegates any exceptions to
|
||||
* {@link ng.$exceptionHandler $exceptionHandler} service.
|
||||
*
|
||||
* In tests you can use `$browser.defer.flush()` to flush the queue of deferred functions.
|
||||
*
|
||||
* @param {function()} fn A function, who's execution should be deferred.
|
||||
* @param {number=} [delay=0] of milliseconds to defer the function execution.
|
||||
* @returns {*} DeferId that can be used to cancel the task via `$defer.cancel()`.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ngdoc function
|
||||
* @name ng.$defer#cancel
|
||||
* @methodOf ng.$defer
|
||||
*
|
||||
* @description
|
||||
* Cancels a defered task identified with `deferId`.
|
||||
*
|
||||
* @param {*} deferId Token returned by the `$defer` function.
|
||||
* @returns {boolean} Returns `true` if the task hasn't executed yet and was successfuly canceled.
|
||||
*/
|
||||
function $DeferProvider(){
|
||||
this.$get = ['$rootScope', '$browser', '$log', function($rootScope, $browser, $log) {
|
||||
$log.warn('$defer service has been deprecated, migrate to $timeout');
|
||||
|
||||
function defer(fn, delay) {
|
||||
return $browser.defer(function() {
|
||||
$rootScope.$apply(fn);
|
||||
}, delay);
|
||||
}
|
||||
|
||||
defer.cancel = function(deferId) {
|
||||
return $browser.defer.cancel(deferId);
|
||||
};
|
||||
|
||||
return defer;
|
||||
}];
|
||||
}
|
||||
5
src/ngMock/angular-mocks.js
vendored
5
src/ngMock/angular-mocks.js
vendored
@@ -27,11 +27,6 @@ angular.mock = {};
|
||||
*
|
||||
* The api of this service is the same as that of the real {@link ng.$browser $browser}, except
|
||||
* that there are several helper methods available which can be used in tests.
|
||||
*
|
||||
* The following apis can be used in tests:
|
||||
*
|
||||
* - $browser.defer — enables testing of code that uses
|
||||
* {@link ng.$defer $defer} for executing functions via the `setTimeout` api.
|
||||
*/
|
||||
angular.mock.$BrowserProvider = function() {
|
||||
this.$get = function(){
|
||||
|
||||
@@ -1,114 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
describe('$defer', function() {
|
||||
beforeEach(module(function($provide) {
|
||||
$provide.factory('$exceptionHandler', function(){
|
||||
return jasmine.createSpy('$exceptionHandler');
|
||||
});
|
||||
$provide.value('$log', {warn: noop});
|
||||
}));
|
||||
|
||||
|
||||
it('should delegate functions to $browser.defer', inject(function($defer, $browser, $exceptionHandler) {
|
||||
var counter = 0;
|
||||
$defer(function() { counter++; });
|
||||
|
||||
expect(counter).toBe(0);
|
||||
|
||||
$browser.defer.flush();
|
||||
expect(counter).toBe(1);
|
||||
|
||||
expect(function() {$browser.defer.flush();}).toThrow('No deferred tasks to be flushed');
|
||||
expect(counter).toBe(1);
|
||||
|
||||
expect($exceptionHandler).not.toHaveBeenCalled();
|
||||
}));
|
||||
|
||||
|
||||
it('should delegate exception to the $exceptionHandler service', inject(function($defer, $browser, $exceptionHandler) {
|
||||
$defer(function() {throw "Test Error";});
|
||||
expect($exceptionHandler).not.toHaveBeenCalled();
|
||||
|
||||
$browser.defer.flush();
|
||||
expect($exceptionHandler).toHaveBeenCalledWith("Test Error");
|
||||
}));
|
||||
|
||||
|
||||
it('should call $apply after each callback is executed', inject(function($defer, $browser, $rootScope) {
|
||||
var applySpy = this.spyOn($rootScope, '$apply').andCallThrough();
|
||||
|
||||
$defer(function() {});
|
||||
expect(applySpy).not.toHaveBeenCalled();
|
||||
|
||||
$browser.defer.flush();
|
||||
expect(applySpy).toHaveBeenCalled();
|
||||
|
||||
applySpy.reset(); //reset the spy;
|
||||
|
||||
$defer(function() {});
|
||||
$defer(function() {});
|
||||
$browser.defer.flush();
|
||||
expect(applySpy.callCount).toBe(2);
|
||||
}));
|
||||
|
||||
|
||||
it('should call $apply even if an exception is thrown in callback', inject(function($defer, $browser, $rootScope) {
|
||||
var applySpy = this.spyOn($rootScope, '$apply').andCallThrough();
|
||||
|
||||
$defer(function() {throw "Test Error";});
|
||||
expect(applySpy).not.toHaveBeenCalled();
|
||||
|
||||
$browser.defer.flush();
|
||||
expect(applySpy).toHaveBeenCalled();
|
||||
}));
|
||||
|
||||
|
||||
it('should allow you to specify the delay time', inject(function($defer, $browser) {
|
||||
var defer = this.spyOn($browser, 'defer');
|
||||
$defer(noop, 123);
|
||||
expect(defer.callCount).toEqual(1);
|
||||
expect(defer.mostRecentCall.args[1]).toEqual(123);
|
||||
}));
|
||||
|
||||
|
||||
it('should return a cancelation token', inject(function($defer, $browser) {
|
||||
var defer = this.spyOn($browser, 'defer').andReturn('xxx');
|
||||
expect($defer(noop)).toEqual('xxx');
|
||||
}));
|
||||
|
||||
|
||||
describe('cancel', function() {
|
||||
it('should cancel tasks', inject(function($defer, $browser) {
|
||||
var task1 = jasmine.createSpy('task1'),
|
||||
task2 = jasmine.createSpy('task2'),
|
||||
task3 = jasmine.createSpy('task3'),
|
||||
token1, token3;
|
||||
|
||||
token1 = $defer(task1);
|
||||
$defer(task2);
|
||||
token3 = $defer(task3, 333);
|
||||
|
||||
$defer.cancel(token3);
|
||||
$defer.cancel(token1);
|
||||
$browser.defer.flush();
|
||||
|
||||
expect(task1).not.toHaveBeenCalled();
|
||||
expect(task2).toHaveBeenCalledOnce();
|
||||
expect(task3).not.toHaveBeenCalled();
|
||||
}));
|
||||
|
||||
|
||||
it('should return true if a task was succesffuly canceled', inject(function($defer, $browser) {
|
||||
var task1 = jasmine.createSpy('task1'),
|
||||
task2 = jasmine.createSpy('task2'),
|
||||
token1, token2;
|
||||
|
||||
token1 = $defer(task1);
|
||||
$browser.defer.flush();
|
||||
token2 = $defer(task2);
|
||||
|
||||
expect($defer.cancel(token1)).toBe(false);
|
||||
expect($defer.cancel(token2)).toBe(true);
|
||||
}));
|
||||
});
|
||||
});
|
||||
2
test/ngMock/angular-mocksSpec.js
vendored
2
test/ngMock/angular-mocksSpec.js
vendored
@@ -989,7 +989,7 @@ describe('ngMockE2E', function() {
|
||||
|
||||
|
||||
describe('autoflush', function() {
|
||||
it('should flush responses via $defer', inject(function($browser) {
|
||||
it('should flush responses via $browser.defer', inject(function($browser) {
|
||||
hb.when('GET', '/foo').respond('bar');
|
||||
hb('GET', '/foo', null, callback);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user