Fetch
is asynchronous and returns a promise. There is no way to take the data returned by fetch and access it synchronously. And it can't return users
because the function needs to return synchronously but the data for users
won't be available. The function returns before Fetch has a response from the url. That's okay, that's how everything is done and it all still works.
The most flexible way to handle this is to just return the promise from the function. Then you can use then()
on the result of the promise and do anything you need to do there:
function func(url) {
return fetch(url) // return this promise
.then(response => response.json())
.then(json => (json.results))
}
func('https://randomuser.me/api/?results=10')
.then(users => console.log(users)) // call `then()` on the returned promise to access users
.catch(err => /* handle errors */)