angular/packages/zone.js/lib
JiaLiPassion 08b0c87a94 fix(zone.js): Promise.resolve(subPromise) should return subPromise (#53423)
In the original `Promise` impelmentation, zone.js follow the spec from
https://promisesaplus.com/#point-51.

```
const p1 = Promise.resolve(1);
const p2 = Promise.resolve(p1);

p1 === p2; // false
```
in this case, `p2` should be the same status with `p1` but they are
still different instances.

And for some edge case.

```
class MyPromise extends Promise {
  constructor(sub) {
    super((res) => res(null));
    this.sub = sub;
  }
  then(onFufilled, onRejected) {
    this.sub.then(onFufilled, onRejected);
  }
}

const p1 = new Promise(setTimeout(res), 100);
const myP = new MyPromise(p1);
const r = await myP;
r === 1; // false
```

So in the above code, `myP` is not the same instance with `p1`,
and since `myP` is resolved in constructor, so `await myP` will
just pass without waiting for `p1`.

And in the current `tc39` spec here https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise-resolve
`Promise.resolve(subP)` should return `subP`.

```
const p1 = Promise.resolve(1);
const p2 = Promise.resolve(p1);

p1 === p2; // true
```

So the above `MyPromise` can wait for the `p1` correctly.

PR Close #53423
2023-12-11 10:55:12 -08:00
..
browser feat(zone.js): remove legacy files and access to deep imports (#51752) 2023-09-14 12:11:05 +02:00
closure docs: fix spelling (#46713) 2022-07-08 20:54:52 +00:00
common fix(zone.js): Promise.resolve(subPromise) should return subPromise (#53423) 2023-12-11 10:55:12 -08:00
extra docs: fix spelling (#46713) 2022-07-08 20:54:52 +00:00
jasmine refactor(zone.js): remove leftover debugging code using Error.stack (#46989) 2022-08-01 09:52:29 -07:00
jest feat(zone.js): jest 29 should ignore uncaught error console log (#49325) 2023-03-27 08:33:49 -07:00
mix build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
mocha fix(zone.js): revert Mocha it.skip, describe.skip method patch (#49329) 2023-03-14 09:13:57 -07:00
node fix(zone.js): enable monkey patching of the queueMicrotask() API in node.js (#50530) 2023-06-07 12:42:33 -07:00
rxjs fix(zone.js): zone patch rxjs should return null _unsubscribe correctly. (#37091) 2020-07-27 12:10:27 -07:00
testing refactor(core): remove unused fakeAsyncFallback and asyncFallback (#37879) 2020-11-20 08:34:59 -08:00
zone-spec refactor(zone.js): remove zone-async-tagging from zone.js (#47416) 2022-09-23 14:44:38 -07:00
BUILD.bazel refactor: update zone.js and tests to work with ESM (#48521) 2022-12-19 19:50:44 +00:00
zone-global.d.ts fix(zone.js): remove global declaration (#37861) 2020-10-23 15:19:49 -07:00
zone.api.extensions.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
zone.configurations.api.ts fix(zone.js): disable wrapping unhandled promise error by default (#52492) 2023-11-03 09:33:20 -07:00
zone.ts fix(zone.js): use globalThis instead of global and window (#52367) 2023-10-25 09:31:17 -07:00