Return value inside a request

How to get a return value inside a request? I’m always receiving ‘undefined’ when I call this function

function get_coordinates_by_address(address){
	app.request.json('https://nominatim.openstreetmap.org/search?q='+address+'&format=json&polygon=1&addressdetails=1','',callback).then(function (res) {
					data = res.data;					
					
					var lat = data[0].lat;
					var lon	= data[0].lon;
					
					var latlon = lat + " " + lon;
					return latlon;
					
	})
}

You have to wait your response.

async function get_coordinates_by_address(address) {
     return await app.request.json(...)
          .then((res) => {
                ...
                return latlon;
          });
}
1 Like

Still not working as expected. I did:

async function get_coordinates_by_address(address) {
	return await app.request.json('https://nominatim.openstreetmap.org/search?q='+address+'&format=json&polygon=1&addressdetails=1').then(function (res) {
		data = res.data;					
		
		var lat = data[0].lat;
		var lon	= data[0].lon;
		
		var latlon = lat + " " + lon;
		return latlon;
					
	})
}

My function call:

var coordinates = get_coordinates_by_address(address);
console.log(coordinates);

Result in console:

Promise {<pending>}[[Prototype]]: 
	Promise[[PromiseState]]: "fulfilled"
	[[PromiseResult]]: "40.62162084644154 -74.15137549229134"

Use then() method.
Reference: Promise.prototype.then() - JavaScript | MDN

I did:

function get_coordinates_by_address(address) {
	var RequestPromise = app.request.json('https://nominatim.openstreetmap.org/search?q='+address+'&format=json&polygon=1&addressdetails=1').then(function (res) {
		data = res.data;					
		
		var lat = data[0].lat;
		var lon	= data[0].lon;
		
		var latlon = lat + " " + lon;
		return latlon;
					
	})
	
	var request = RequestPromise.then(value => {		
		return value;
	});
	
	return request;
	
}

Still receiving the same message after call…

look at this javascript - How to return the response from an asynchronous call - Stack Overflow

1 Like

You really need to learn how Promises work otherwise you will stuck everywhere Promise - JavaScript | MDN

You function returns promise so it must be used like promise:

get_coordinates_by_address(...).then((value) => {
  console.log(value);
})
1 Like

Or just store the value with an Await, for example, also you need to put ASYNC after the export default.

let re = await get_coordinates_by_address();

print_r(re);

I’m studying Promises closer, but, for now, I was able to get the value with this code:

var PromiseCoordinates = get_coordinates_by_address(address);
PromiseCoordinates.then(function(result){
		console.log(result);
	})

I’ll deep into this subject to learn more. Thanks for all the support :slight_smile: