gpt4 book ai didi

javascript - 禁用 JS 事件

转载 作者:太空宇宙 更新时间:2023-11-04 15:34:31 25 4
gpt4 key购买 nike

我在网页上使用 map ,并且有以下 JS 代码:

map.on('zoomend', function() {
populate();
});

当我放大 map 时,会调用函数 populate() (它用于在 map 上放置一些标记)。

我想要的是在 populate 执行其操作时禁用事件“zoomend”,所以我想要这样的东西:

map.on('zoomend', function() {
// DISABLE ZOOMEND EVENT
populate();
// ENABLE ZOOMEND AGAIN
});

我怎样才能做到这一点?

谢谢!

编辑:这是我的函数 populate() 的一部分

function populate() {
$.post('/LoadMarkersServlet', {
lat_min: map.getBounds().getNorthWest(),
lat_max: map.getBounds().getSouthEast(),
//more parameters
//...
}, function (responseText) {
if(responseText !== null) {
var p = JSON.parse(responseText);

for(var i=0; i<p.length; i++){
// here I read the responseText and put markers where it says
}
map.addLayer(markers);
}
});
}

最佳答案

这应该有效:

// name your event listener
map.on('zoomend', function handleZoomEnd() {
// turn it off temporarily
map.off('zoomend', handleZoomEnd);
// pass a function to re-enable it after ajax completes
populate(function () {
map.on('zoomend', handleZoomEnd);
});
});

// accept callback function as parameter
function populate(cb) {
$.post('/LoadMarkersServlet', {
lat_min: map.getBounds().getNorthWest(),
lat_max: map.getBounds().getSouthEast(),
//more parameters
//...
}, function (responseText) {
if(responseText !== null) {
var p = JSON.parse(responseText);

for(var i=0; i<p.length; i++){
// here I read the responseText and put markers where it says
}
map.addLayer(markers);

// this re-enables zoomend callback
cb();
}
});
}

关于javascript - 禁用 JS 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44505875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com