JavaScript范围,从函数回调中断循环

时间:2014-03-28 09:28:41

标签: javascript scope cycle

如果proccess = true,我需要打破循环,但它未定义。

        var mapFound;
        var locations = {$addressTest};
        for (var i = 0; i < locations.length; ++i) {
            getCoordinates(
                    locations[i],
                    function(proccess) {
                    }
            )
            if(proccess) { break; }
        }

1 个答案:

答案 0 :(得分:1)

问题似乎基本上是getCoordinates()进行异步调用。

当循环结束时,根据您的问题文本,您甚至没有收到第一个回复,因此您需要使用其他解决方案。

我的意思是,你赢了能够打破周期,因为在周期结束时你仍然没有&# 39;知道过程是否属实。

根据您的实施情况,您可能需要查看promises。虽然将整个事物包装在执行回调的函数中可能更容易:

function getCoords(locations, name, callback){
    for (var i = 0; i < locations.length; i++) {
        getCoordinates( locations[i], name,
            function(proccess) {
                if(process){
                    console.log("Map found in "+locations[i]);
                    callback.call();
                }
            }
        );
    }
}

getCoords({$addressTest}, {$name}, function(){
    // Place here whatever you want to do once the map is found.
    // you can get the map location by passing it as an argument for the callback.
});