MCPcopy Create free account
hub / github.com/apache/cloudstack / defer

Function defer

tools/ngui/static/js/lib/angular.js:6810–6874  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

6808 * @returns {Deferred} Returns a new instance of deferred.
6809 */
6810 var defer = function() {
6811 var pending = [],
6812 value, deferred;
6813
6814 deferred = {
6815
6816 resolve: function(val) {
6817 if (pending) {
6818 var callbacks = pending;
6819 pending = undefined;
6820 value = ref(val);
6821
6822 if (callbacks.length) {
6823 nextTick(function() {
6824 var callback;
6825 for (var i = 0, ii = callbacks.length; i < ii; i++) {
6826 callback = callbacks[i];
6827 value.then(callback[0], callback[1]);
6828 }
6829 });
6830 }
6831 }
6832 },
6833
6834
6835 reject: function(reason) {
6836 deferred.resolve(reject(reason));
6837 },
6838
6839
6840 promise: {
6841 then: function(callback, errback) {
6842 var result = defer();
6843
6844 var wrappedCallback = function(value) {
6845 try {
6846 result.resolve((callback || defaultCallback)(value));
6847 } catch(e) {
6848 exceptionHandler(e);
6849 result.reject(e);
6850 }
6851 };
6852
6853 var wrappedErrback = function(reason) {
6854 try {
6855 result.resolve((errback || defaultErrback)(reason));
6856 } catch(e) {
6857 exceptionHandler(e);
6858 result.reject(e);
6859 }
6860 };
6861
6862 if (pending) {
6863 pending.push([wrappedCallback, wrappedErrback]);
6864 } else {
6865 value.then(wrappedCallback, wrappedErrback);
6866 }
6867

Callers 4

refFunction · 0.85
rejectFunction · 0.85
whenFunction · 0.85
allFunction · 0.85

Calls 2

refFunction · 0.85
rejectFunction · 0.85

Tested by

no test coverage detected