编辑:我正在使用Zone v0.8.20
背景:Google地图会在缩小地图时触发requestAnimationFrame
,在平移时,我想通过Zone.js截取这些requestAnimationFrame
以对其进行去抖,并可能会提高移动设备的性能。
我有以下简单的repro代码:
<!DOCTYPE html>
<html>
<head>
...
<script src="node_modules/zone.js/dist/zone.js"></script>
</head>
<body>
<div id="map"></div>
<script>
var map;
var mapZone = Zone.current.fork({
name: "GMAPS",
onScheduleTask: (delegate, current, target, task) => {
console.log(task);
console.log(Zone.current.name)
return delegate.scheduleTask(target, task);
},
onHasTask: (delegate, current, target, task) => {
console.log(task)
}
})
function initMap() {
mapZone.run(() => {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8
});
var marker = new google.maps.Marker({
position: {lat: -34.100, lng: 150.644},
map: map,
title: 'Hello World!'
});
});
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=API_KEY&callback=initMap&sensor=true"
async defer></script>
</body>
</html>
这里的问题是我似乎无法拦截ZoneSpec上定义的requestAnimationFrame
方法上的onScheduleTask
...正如您在代码中看到的那样,我运行了Google的实例化分叉区域内的地图名为mapZone
我是Zone.js的新手,这可能是一个简单的问题,但我似乎找不到解决方案......你觉得我在这里错过了什么?
提前非常感谢!
答案 0 :(得分:-1)
由于谷歌地图是在根区域中加载而无法正常工作的原因,并且在当前版本的zone.js中,无法配置根区域规范。
我已经通过monkey-patch zone.js创建了一个关于这个的配置根区域。你可以在下面的链接找到工作样本。