如何从回调函数访问外部变量?

时间:2016-02-23 16:59:11

标签: javascript node.js

我在使用以下代码段时遇到问题。我无法从回调函数中访问userId,我无法返回whitelistedUserIds是否包含userId。根据调试器,当我进入回调时,userId未定义。

有人可以解释为什么吗?以及如何解决这个问题?我已经离开javascript很长一段时间了......

function userInWhitelist(userFileName) {
  var userId = userFileName.replace('.txt', '');
  request({
    url: whitelistURL
  }, function(err, resp, body, userId) {
    if (resp.statusCode == 200) {
      var users = JSON.parse(body).data;
      var whitelistedUserIds = _.map(users, (user) => { return user.id; });
      // How to access userId ??
      // How to return whitelistedUserIds.includes(userId)
    }
  });

1 个答案:

答案 0 :(得分:4)

回调' userId正在影响外部回复。 只需从回调中移除userId

即可
function userInWhitelist(userFileName) {
  var userId = userFileName.replace('.txt', '');
  request({
    url: whitelistURL
  }, function(err, resp, body) {
    if (resp.statusCode == 200) {
      var users = JSON.parse(body).data;
      var whitelistedUserIds = _.map(users, (user) => { return user.id; });
     // here you have access to userId
    }
  });