的NodeJS无法访问变量中的回调(NodeJS Can't Access Variable

2019-09-02 10:29发布

我相信这是与它是异步的问题,但我不知道解决的办法。

    PagesController.buy = function() {

  var table="";
  Selling.find({}, function(err, res) {
    for (var i in res) {
      console.log(res[i].addr);
      table = table + "res[i].addr";
    }
  });
  this.table = table;
  console.log(table);
  this.render();
}

我的问题是, this.table=table中返回undefined如果我试图函数的外部访问它,我无法弄清楚如何在页面上显示的表。

Answer 1:

问题是Selling.find是异步的,可能是不完整的执行this.table =表的时间。 试着像下面这样。

PagesController.buy = function() {
  var that = this;
  Selling.find({}, function(err, res) {
    var table = '';
    for (var i in res) {
      console.log(res[i].addr);
      table = table + res[i].addr;
    }

    that.table = table;
    console.log(table);
    that.render();
  });
}

这将保证表中没有使用,直到之后的结果已被获取并表已被填充。



文章来源: NodeJS Can't Access Variable Inside Callback