NodeJS无法在回调函数中访问变量

3

我认为这是异步问题,但我不知道解决方法。

    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,它会返回未定义,并且我不知道如何在页面上显示表格。


你是如何在函数外部访问"this.table"的? - Timothy Strimple
抱歉,我的意思是变量“table”在函数(err, res) {}内被设置,当我尝试将其分配给this.table时,变量“table”为空。 - h00j
1个回答

6
问题在于Selling.find是异步的,很可能在执行this.table = 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();
  });
}

那将确保在获取结果并填充表格之后才使用该表格。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接