From 653c74e64e5ccd66cda94c77577984f8afa8386d Mon Sep 17 00:00:00 2001 From: GU Yiling Date: Fri, 15 Mar 2019 09:06:40 +0800 Subject: [PATCH] fix(core): use window.performance for compatibility in JSDOM (#9700) fix #9698 --- src/core/observer/scheduler.js | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/core/observer/scheduler.js b/src/core/observer/scheduler.js index b0583ed1..20170cc0 100644 --- a/src/core/observer/scheduler.js +++ b/src/core/observer/scheduler.js @@ -47,16 +47,18 @@ let getNow: () => number = Date.now // timestamp can either be hi-res (relative to page load) or low-res // (relative to UNIX epoch), so in order to compare time we have to use the // same timestamp type when saving the flush timestamp. -if ( - inBrowser && - window.performance && - typeof performance.now === 'function' && - document.createEvent('Event').timeStamp <= performance.now() -) { - // if the event timestamp is bigger than the hi-res timestamp - // (which is evaluated AFTER) it means the event is using a lo-res timestamp, - // and we need to use the lo-res version for event listeners as well. - getNow = () => performance.now() +if (inBrowser) { + const performance = window.performance + if ( + performance && + typeof performance.now === 'function' && + document.createEvent('Event').timeStamp <= performance.now() + ) { + // if the event timestamp is bigger than the hi-res timestamp + // (which is evaluated AFTER) it means the event is using a lo-res timestamp, + // and we need to use the lo-res version for event listeners as well. + getNow = () => performance.now() + } } /**