MCPcopy Index your code
hub / github.com/angular/angular / resolvePromise

Function resolvePromise

packages/zone.js/lib/common/promise.ts:137–249  ·  view source on GitHub ↗
(
      promise: ZoneAwarePromise<any>,
      state: boolean,
      value: any,
    )

Source from the content-addressed store, hash-verified

135
136 // Promise Resolution
137 function resolvePromise(
138 promise: ZoneAwarePromise<any>,
139 state: boolean,
140 value: any,
141 ): ZoneAwarePromise<any> {
142 const onceWrapper = once();
143 if (promise === value) {
144 throw new TypeError(TYPE_ERROR);
145 }
146 if ((promise as any)[symbolState] === UNRESOLVED) {
147 // should only get value.then once based on promise spec.
148 let then: any = null;
149 try {
150 if (typeof value === 'object' || typeof value === 'function') {
151 then = value && value.then;
152 }
153 } catch (err) {
154 onceWrapper(() => {
155 resolvePromise(promise, false, err);
156 })();
157 return promise;
158 }
159 // if (value instanceof ZoneAwarePromise) {
160 if (
161 state !== REJECTED &&
162 value instanceof ZoneAwarePromise &&
163 value.hasOwnProperty(symbolState) &&
164 value.hasOwnProperty(symbolValue) &&
165 (value as any)[symbolState] !== UNRESOLVED
166 ) {
167 clearRejectedNoCatch(value);
168 resolvePromise(promise, (value as any)[symbolState], (value as any)[symbolValue]);
169 } else if (state !== REJECTED && typeof then === 'function') {
170 try {
171 then.call(
172 value,
173 onceWrapper(makeResolver(promise, state)),
174 onceWrapper(makeResolver(promise, false)),
175 );
176 } catch (err) {
177 onceWrapper(() => {
178 resolvePromise(promise, false, err);
179 })();
180 }
181 } else {
182 (promise as any)[symbolState] = state;
183 const queue = (promise as any)[symbolValue];
184 (promise as any)[symbolValue] = value;
185
186 if ((promise as any)[symbolFinally] === symbolFinally) {
187 // the promise is generated by Promise.prototype.finally
188 if (state === RESOLVED) {
189 // the state is resolved, should ignore the value
190 // and use parent promise value
191 (promise as any)[symbolState] = (promise as any)[symbolParentPromiseState];
192 (promise as any)[symbolValue] = (promise as any)[symbolParentPromiseValue];
193 }
194 }

Callers 5

makeResolverFunction · 0.85
scheduleResolveOrRejectFunction · 0.85
resolveMethod · 0.85
rejectMethod · 0.85
constructorMethod · 0.85

Calls 7

onceFunction · 0.85
clearRejectedNoCatchFunction · 0.85
makeResolverFunction · 0.85
scheduleResolveOrRejectFunction · 0.85
readableObjectToStringFunction · 0.85
scheduleMicroTaskMethod · 0.65
pushMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…