diff options
| author | Igor Minar | 2011-02-15 01:12:45 -0500 | 
|---|---|---|
| committer | Igor Minar | 2011-02-15 11:01:53 -0500 | 
| commit | 1777110958f76ee4be5760e36c96702223385918 (patch) | |
| tree | 5aa03b246507e66877e5eac69e58e004e244d7a5 /src/service/defer.js | |
| parent | d2089a16335276eecb8d81eb17332c2dff2cf1a2 (diff) | |
| download | angular.js-1777110958f76ee4be5760e36c96702223385918.tar.bz2 | |
split up services into individual files
- split up services into files under src/service
- split up specs into files under test/service
- rewrite all specs so that they don't depend on one global forEach
- get rid of obsolete code and tests in ng:switch
- rename mock $log spec from "$log" to "$log mock"
Diffstat (limited to 'src/service/defer.js')
| -rw-r--r-- | src/service/defer.js | 32 | 
1 files changed, 32 insertions, 0 deletions
diff --git a/src/service/defer.js b/src/service/defer.js new file mode 100644 index 00000000..21bf139b --- /dev/null +++ b/src/service/defer.js @@ -0,0 +1,32 @@ +/** + * @workInProgress + * @ngdoc service + * @name angular.service.$defer + * @requires $browser + * @requires $exceptionHandler + * @requires $updateView + * + * @description + * Delegates to {@link angular.service.$browser.defer $browser.defer}, but wraps the `fn` function + * into a try/catch block and delegates any exceptions to + * {@link angular.services.$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. + */ +angularServiceInject('$defer', function($browser, $exceptionHandler, $updateView) { +  var scope = this; + +  return function(fn) { +    $browser.defer(function() { +      try { +        fn(); +      } catch(e) { +        $exceptionHandler(e); +      } finally { +        $updateView(); +      } +    }); +  }; +}, ['$browser', '$exceptionHandler', '$updateView']);  | 
