MCPcopy
hub / github.com/angular/angular / ZoneAwarePromise

Class ZoneAwarePromise

packages/zone.js/lib/common/promise.ts:326–576  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

324 const AggregateError = global.AggregateError;
325
326 class ZoneAwarePromise<R> implements Promise<R> {
327 static toString() {
328 return ZONE_AWARE_PROMISE_TO_STRING;
329 }
330
331 static resolve<R>(value: R): Promise<R> {
332 if (value instanceof ZoneAwarePromise) {
333 return value;
334 }
335 return resolvePromise(<ZoneAwarePromise<R>>new this(null as any), RESOLVED, value);
336 }
337
338 static reject<U>(error: U): Promise<U> {
339 return resolvePromise(<ZoneAwarePromise<U>>new this(null as any), REJECTED, error);
340 }
341
342 static withResolvers<T>(): {
343 promise: Promise<T>;
344 resolve: (value?: T | PromiseLike<T>) => void;
345 reject: (error?: any) => void;
346 } {
347 const result: any = {};
348 result.promise = new ZoneAwarePromise((res, rej) => {
349 result.resolve = res;
350 result.reject = rej;
351 });
352 return result;
353 }
354
355 static any<T>(values: Iterable<PromiseLike<T>>): Promise<T> {
356 if (!values || typeof values[Symbol.iterator] !== 'function') {
357 return Promise.reject(new AggregateError([], 'All promises were rejected'));
358 }
359 const promises: Promise<PromiseLike<T>>[] = [];
360 let count = 0;
361 try {
362 for (let v of values) {
363 count++;
364 promises.push(ZoneAwarePromise.resolve(v));
365 }
366 } catch (err) {
367 return Promise.reject(new AggregateError([], 'All promises were rejected'));
368 }
369 if (count === 0) {
370 return Promise.reject(new AggregateError([], 'All promises were rejected'));
371 }
372 let finished = false;
373 const errors: any[] = [];
374 return new ZoneAwarePromise((resolve, reject) => {
375 for (let i = 0; i < promises.length; i++) {
376 promises[i].then(
377 (v) => {
378 if (finished) {
379 return;
380 }
381 finished = true;
382 resolve(v);
383 },

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…