Вернуть переменную из функции обратного вызова - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть этот код

function LoadEmailIdsToCheck() {
  fs.readFile(config.googleCredentials, function processClientSecrets(
    err,
    content
  ) {
    if (err) {
      console.log("Error loading client secret file: " + err);
      //  return;
    }
    // Authorize a client with the loaded credentials, then call the
    // Gmail API.
    authorize(JSON.parse(content), getEmails);
  });
}


function authorize(credentials, callback) {
  var clientSecret = credentials.installed.client_secret;
  var clientId = credentials.installed.client_id;
  var redirectUrl = credentials.installed.redirect_uris[0];

  var OAuth2 = google.auth.OAuth2;

  var oauth2Client = new OAuth2(clientId, clientSecret, redirectUrl);
  ...
  }


function getEmails(auth) {
  const gmail = google.gmail({ version: "v1", auth });
  gmail.users.messages.list(
    {
      userId: "me"
    },
    (err, res) => {
      if (err) return console.log("The API returned an error!: " + err);
      else {
        response = res
       return response;
      }
    }
  );
}    

Когда я запускаю код с помощью «LoadEmailIdsToCheck ()», я не получу возврата функции обратного вызова. Если я делаю console.log (res), он выводит необходимые данные, но я не могу выполнить «return res».

Итак, мой вопрос почему? И как я могу решить эту проблему?

...