Как вернуть значение из внутренней функции во внешнюю функцию - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь вернуть значение pagenumber из внутренней функции в другую. Но из-за асинхронного характера javascript. Я не могу это сделать, так как внешняя функция выполняется раньше, чем внутренняя. Я пытаюсь использовать обратный вызов к нему, но он выдаст ошибку, если я вызову внешнюю функцию (откуда-то еще) без обратного вызова. Мой код:

'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;
}, 

1 Ответ

1 голос
/ 13 февраля 2020

Асинхронные операции в Javascript не могут быть эффективно обработаны без обратных вызовов, обещаний или ключевых слов async / await.

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
    }
}
...