当前位置: 首页 > 面试题库 >

NodeJS无法访问回调内部的变量

晋天逸
2023-03-14
问题内容

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

    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,并且我不知道如何在页面上显示表格。


问题答案:

问题是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();
  });
}

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



 类似资料:
  • 问题内容: 这(我的代码的简化版本)不起作用: 为什么?我要访问,因为如果失败,我想在上面记录错误。 递归地调用自身以创建目录列表,因此我担心将整体传递给自身(如中所述)可能会损害性能。 有没有一种方法可以在不传递参数的情况下访问内部?(PHP 5.2.x +) 编辑: 如果代码看起来像这样呢? 问题答案: 您必须将其传递给函数: 或将其声明为global: 如果变量不是全局变量,而是在外部函数中

  • 问题内容: 我有以下课程片段: 我无法获得设置的超时值以从事件中打印值,我应该做些什么,但我不是吗? 问题答案: SyntheticEvent 。 根据 DOC : SyntheticEvent已合并。这意味着在调用事件回调之后,将重新使用SyntheticEvent对象,并且所有属性都将无效。这是出于性能原因。 例: 如何访问回调中的值? 将值存储在变量中: 如果要在超时回调函数中访问该值,则将

  • 我正在构建一个消息传递应用程序。我使用setTimeout每隔5秒从后端检索一次消息日志,并将其存储在一个状态变量中。我让它也滚动到聊天窗口的底部每次超时,但我试图使它只发生在有一个新的消息在响应对象。问题是我无法访问检索它的函数中的状态变量。理想情况下,我会将响应对象的长度与状态变量的当前长度进行比较,以确定是否存在新的响应。 这是我的代码: 在处理逻辑方面,我也愿意接受更好的建议。提前道谢!

  • 问题内容: 嗨,我正在浏览有关内部类的SCJP书,发现了这一说法,类似这样。 方法本地类只能引用已标记的本地变量 在解释中,指定的原因与本地类对象和堆上的局部变量的范围和生存期有关,但我无法理解。我在这里想念任何东西吗? 问题答案: 原因是,在创建方法本地类实例时,编译器实际上会将其引用的所有方法本地变量复制到其中。这就是为什么只能访问变量的原因。甲变量或参考是不变的,所以它停留在同步与其方法本地

  • 问题内容: 在内部类中,可以访问外部类的变量,但不能访问方法的局部变量。我了解了无法访问方法的局部变量的部分,但我想知道为什么外部类变量可以访问? 我的理解是,由于内部类与外部类绑定,因此只要父级可用,子级就可以访问其父级变量。我对么? 问题答案: 假设您的外部类在内部类的范围内(非静态)被称为,以获取该字段。 例如, 其中Outer是类的名称,并标识该字段。 您也可以直接抓取它,但是如果由于阴影

  • 在内部类中,外部类的变量是可访问的,但方法的局部变量不是。我理解了关于方法的局部变量不可访问的部分,但我想知道为什么外部类变量是可访问的? 我的理解是,由于内部类与外部类绑定,因此只要父类可用,子类就可以访问其父变量。我说得对吗?