Handling Json data outside a function with pebble.js

252 Views Asked by At

In the function getweather() I do fetch some weather data from a Json-object and store that data in the variable data. Within that function, I can handle the Json-data, but how do I access the data from outside of getweather()?

It doesn't matter if i return the variable location or data. The variable place is just not Json.

How do I handle the place variable in order to make it work as it does within the function getweather()?

var ajax = require('ajax');

var place;
place = getweather();

function getweather()
{
    // Make the request
    ajax(
    {
      url: 'http://api.openweathermap.org/data/2.5/weather?q=paris.fr', type: 'json'
   },
    function(data) 
    {
    // Success!
    console.log("Successfully fetched weather data!");

    // Extract data
        var location = data.name;
        return location;    

    },
    function(error) {
    // Failure!
    console.log('Failed fetching weather data: ' + error);
    }
  );    
}
1

There are 1 best solutions below

0
On

The A in AJAX stands for asynchronous. What's happening in your code is that you are trying to assign a value to place before the asynchronous call to api.openweather.org has returned.

You can check this by placing a statement like console.log(place); directly after place = getweather();. You will notice in the console that None is returned before you see Successfully fetched weather data!

This issue has been described in detail in this post. It recommends restructuring your code around your callbacks.