fix(zone.js): `tickOptions`'s `processNewMacroTasksSynchronously` should default to true when flag omitted (#35814)
Calling `tick(0, null)` defaults `processNewMacroTasksSynchronously` flag to `true`, however calling `tick(0, null, {})` defaults `processNewMacroTasksSynchronously` to `undefined`. This is undesirable behavior since unless the flag is set explicitly it should still default to `true`. PR Close #35814
This commit is contained in:
parent
958165888c
commit
55b3f97be0
|
@ -136,11 +136,12 @@
|
|||
}
|
||||
}
|
||||
|
||||
tick(millis: number = 0, doTick?: (elapsed: number) => void, tickOptions: {
|
||||
tick(millis: number = 0, doTick?: (elapsed: number) => void, tickOptions?: {
|
||||
processNewMacroTasksSynchronously: boolean
|
||||
} = {processNewMacroTasksSynchronously: true}): void {
|
||||
}): void {
|
||||
let finalTime = this._currentTime + millis;
|
||||
let lastCurrentTime = 0;
|
||||
tickOptions = Object.assign({processNewMacroTasksSynchronously: true}, tickOptions);
|
||||
// we need to copy the schedulerQueue so nested timeout
|
||||
// will not be wrongly called in the current tick
|
||||
// https://github.com/angular/angular/issues/33799
|
||||
|
|
|
@ -145,6 +145,20 @@ describe('FakeAsyncTestZoneSpec', () => {
|
|||
});
|
||||
}));
|
||||
|
||||
it('should default to processNewMacroTasksSynchronously if providing other flags', () => {
|
||||
function nestedTimer(callback: () => any): void {
|
||||
setTimeout(() => setTimeout(() => callback()));
|
||||
}
|
||||
fakeAsyncTestZone.run(() => {
|
||||
const callback = jasmine.createSpy('callback');
|
||||
nestedTimer(callback);
|
||||
expect(callback).not.toHaveBeenCalled();
|
||||
testZoneSpec.tick(0, null, {});
|
||||
expect(callback).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
it('should not queue new macro task on tick with processNewMacroTasksSynchronously=false',
|
||||
() => {
|
||||
function nestedTimer(callback: () => any): void {
|
||||
|
|
Loading…
Reference in New Issue