javascript - 禁止循环函数

标签 javascript

函数 onSuccess 无限期运行,因为不断向 GPS 接收器询问坐标。它包含一个函数 createMap,仅执行一次。这是如何实现的?在函数之外做一个函数也可以,因为它是作为函数的变量的参数值传递的。

watchID = navigator.geolocation.watchPosition(function(position) {onSuccess(position, arrMyLatLng);}, onError, options);  

function onSuccess(position, arrMyLatLng) 
{

var latitude , longitude ;     
latitude = position.coords.latitude ;
longitude = position.coords.longitude;
var myLatLng = new google.maps.LatLng(latitude, longitude);

createMap(myLatLng, arrMyLatLng);// This feature will run for an indefinite number of times. It is only necessary once. 
map.panTo(myLatLng) ;
}

最佳答案

您可以使用闭包创建具有私有(private)状态的函数:

onSuccess = (function() {
    var created = false;
    return function (position, arrMyLatLng) {
        var latitude , longitude ;     
        latitude = position.coords.latitude ;
        longitude = position.coords.longitude;
        var myLatLng = new google.maps.LatLng(latitude, longitude);
        if (!created) {
            createMap(myLatLng, arrMyLatLng);
            created = true;
        }
        map.panTo(myLatLng) ;
    };
}());

关于javascript - 禁止循环函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15911404/

相关文章:

javascript - 坚持 import/export

javascript - 调整这个 CSS 标题自动隐藏?

javascript - 巨大的 JavaScript HTML5 blob(来自大型 ArrayBuffers)在客户端构建一个巨大的文件

javascript - 更改页脚图像大小会取代相邻图像

javascript - 通过removeEventListener删除后音频事件仍然触发事件

javascript - 在history.listen的useEffect中使用useState钩子(Hook)

javascript - 为什么exportRoot不使用createjs和animate cc将movieclip放置在 Canvas 上?

javascript - 使用 python 重新创建 CryptoJS Hmac

javascript - 中心模式下的光滑轮播导致 SlidesToscroll 无法正常工作

javascript计算其中包含 "X"的文本框的数量