Gagan Singh
Gagan Singh

Reputation: 230

How to return value from inner function to outer function

I'm trying to return value of pagenumber from inner function to another. But due to asynchronous nature of javascript. I'm unable to do it as outer function gets executed earlier as compared to inner one. I'm trying to use callback to it but it will produce error if i call outer function(from somewhere else) without callback. My code is,

'GrabNewResponse':function(credentials,width){
  let pagenumber=0;
  app.request.get(url,function(data){
    let result=JSON.parse(data);
    pagenumber=result.data.pagenumber;
    if(result.success===true){
    app.dialog.close();
   }

  });
  return pagenumber;
}, 

Upvotes: 0

Views: 555

Answers (1)

Ben Aston
Ben Aston

Reputation: 55729

Asynchronous operations in Javascript cannot be effectively handled without callbacks, promises or the async/await keywords.

const request = () => new Promise((resolve, reject) => 
    app.request.get(url, (response) => response.success                                           
                                       ? resolve(response) 
                                       : reject(response)))

const o = {
    async GrabNewResponse(credentials, width) {
        const response = JSON.parse(await request(url))
        const { data: { pagenumber = 0 } } = response
        app.dialog.close()
        return pagenumber
    }
}

Upvotes: 1

Related Questions