首页 > 解决方案 > 从回调函数返回一个变量

问题描述

我有这个代码

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),它会打印出所需的数据,但我无法执行“返回 res”。

所以我的问题是为什么?我该如何解决这个问题?

标签: node.jsgmail-apigoogle-api-nodejs-client

解决方案


推荐阅读