From be8510356a98c2e76c041ccac4129b00a2d4fbe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matias=20Niemel=C3=A4?= Date: Thu, 23 Feb 2017 21:23:57 -0800 Subject: [PATCH] fix(animations): microtasks should not be timeouts (#14687) --- modules/@angular/animations/src/util.ts | 3 +-- modules/@angular/animations/test/util_spec.ts | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 modules/@angular/animations/test/util_spec.ts diff --git a/modules/@angular/animations/src/util.ts b/modules/@angular/animations/src/util.ts index 97f38a28fa..530e64707e 100644 --- a/modules/@angular/animations/src/util.ts +++ b/modules/@angular/animations/src/util.ts @@ -6,6 +6,5 @@ * found in the LICENSE file at https://angular.io/license */ export function scheduleMicroTask(cb: () => any) { - // FIXME - setTimeout(cb, 0); + Promise.resolve(null).then(cb); } diff --git a/modules/@angular/animations/test/util_spec.ts b/modules/@angular/animations/test/util_spec.ts new file mode 100644 index 0000000000..f687d3da7b --- /dev/null +++ b/modules/@angular/animations/test/util_spec.ts @@ -0,0 +1,24 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +import {scheduleMicroTask} from '../src/util'; + +export function main() { + describe('util', () => { + it('should schedule a microtask and not call an async timeout', (done) => { + let count = 0; + scheduleMicroTask(() => count++); + + expect(count).toEqual(0); + Promise.resolve(null).then(() => { + expect(count).toEqual(1); + done(); + }); + expect(count).toEqual(0); + }); + }); +}