1

function getCoordinatesの返されたオブジェクト リテラル (経度と緯度の座標) をfunction getWeather引数の形式で渡すことを検討しているので、function getCoordinatesのオブジェクト リテラルにアクセスできますfunction getWeather。つまり、ある関数の出力を別の関数の入力として渡して、そのデータにアクセスできるようにしようとしています。これを達成するにはどうすればよいですか?

これまでの私のJavaScriptコードは次のとおりです。

var APP = {
    getCoordinates: function () {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(function (position) {
                var coordinates = {
                    latitude: position.coords.latitude,
                    longitude: position.coords.longitude
                }
                return coordinates;
            });
        } else {
            console.log("Geolocation isn't supported in your browser.");
        }
    },

    getWeather: function (getCoordinates) {
        var api_key = '1234567890',
            weather_query = 'http://api.wunderground.com/api/';
            weather_query += api_key + '/geolookup/q/';
            weather_query += longitude + ',' + latitude + '.json';
    }
}
4

6 に答える 6

0

次のようなコールバック関数を使用してそれを行うことができます

var APP = {
    getCoordinates: function (cb) {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(cb);
        } else {
            console.log("Geolocation isn't supported in your browser.");
        }
    },

    getWeather: function () {
        this.getCoordinates(function(cord){
            var api_key = '1234567890',
            weather_query = 'http://api.wunderground.com/api/';
            weather_query += api_key + '/geolookup/q/';
            weather_query += cord.longitude + ',' + cord.latitude + '.json';

            // now you have it
            console.log(weather_query);
        });
    }
}
APP.getWeather();

デモ。

于 2013-07-14T05:31:08.183 に答える