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: boolean
|
||||||
} = {processNewMacroTasksSynchronously: true}): void {
|
}): void {
|
||||||
let finalTime = this._currentTime + millis;
|
let finalTime = this._currentTime + millis;
|
||||||
let lastCurrentTime = 0;
|
let lastCurrentTime = 0;
|
||||||
|
tickOptions = Object.assign({processNewMacroTasksSynchronously: true}, tickOptions);
|
||||||
// we need to copy the schedulerQueue so nested timeout
|
// we need to copy the schedulerQueue so nested timeout
|
||||||
// will not be wrongly called in the current tick
|
// will not be wrongly called in the current tick
|
||||||
// https://github.com/angular/angular/issues/33799
|
// 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',
|
it('should not queue new macro task on tick with processNewMacroTasksSynchronously=false',
|
||||||
() => {
|
() => {
|
||||||
function nestedTimer(callback: () => any): void {
|
function nestedTimer(callback: () => any): void {
|
||||||
|
|
Loading…
Reference in New Issue