我该如何写,以便lfmuser保留UserModel.find()调用的函数中所做的更改?如果可以避免的话,我真的宁愿不必将非常大的代码段移动到每个块中。

var np_handler = function (act) {
  var lfmuser = '';
  if (act.params.length === 0) {
    UserModel.find({ nick: act.nick }, function (err, data) {
      if (!data) {
        lfmuser = act.nick;
      } else {
        lfmuser = data.lastfm;
      }
    });
  } else {
    UserModel.find({ nick: act.params[0] }, function (err, data) {
      if (!data) {
        lfmuser = act.params[0];
      } else {
        lfmuser = data.lastfm;
      }
    });
  }
};


最终在这种情况下没关系,我只是将其余代码(我在使用lfmuser的地方)移到了它自己的函数np(lfm, act){ }中,并在调用它时传递了正确的值。异步可能会很痛苦:/

最佳答案

最简单的解决方案是将其移至np_handler函数之外。注意,随后对该函数的调用将覆盖其值。

关于javascript - 更改函数中的变量并保留为JavaScript?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9662169/

10-12 02:24