从异步回调中获取值

时间:2012-08-27 16:02:38

标签: javascript

您好我正在尝试获取每个循环的位置。 Yahoo placemaker用于从数组的文本变量中获取位置。在每个循环中,我将位置发送到外部函数,但我没有得到值。有谁知道我做错了什么?谢谢!

    function replace_undefined(array, text_array) {
        console.log(text_array);
        for (i = 0, l = text_array.length; i < l; i++) {
            var text = array[i].text;
            Placemaker.getPlaces(text, function (o) {
                console.log(o);
                if ($.isArray(o.match)) {
                    if (o.match[0].place.name == "Europe" || o.match[0].place.name == "United States") {
                        var location = o.match[1].place.name;
                        getLocation(location);
                    }
                    if ($.isArray(o.match)) {
                        if (o.match[0].place.name !== "Europe") {
                            var location = o.match[0].place.name;
                            getLocation(location);
                        }
                    }
                }
                if (!$.isArray(o.match) && o.error == "no locations found") {
                    var location = "";
                    getLocation(location);

                }
                if (!$.isArray(o.match) && o.error !== "no locations found") {
                    var location = o.match.place.name;
                    getLocation(location);
                }
            });
        }

        function getLocation(n) {
            return function () {
                console.log('Location: ' + n);
            };
        }


    }

1 个答案:

答案 0 :(得分:0)

你的问题并没有确切地说出问题所在;我假设它正在调用getLocation

我立刻注意到的一件事是getLocation返回一个函数,所以简单地执行getLocation(location);除了返回该函数之外不会做任何事情。您需要(getLocation(location))();来实际调用getLocation()返回的函数。

您是否有从getLocation返回功能的原因?