从异步回调中获取值

get values from asynchronous callback

本文关键字:获取 回调 异步      更新时间:2023-09-26

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

    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);
            };
        }

    }

您的问题并没有确切地说明问题所在;我假设它在对getLocation的调用中。

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

您从getLocation返回函数是有原因的吗?