oop - nextTick 在类中的用法

标签 oop node.js coffeescript

如果我有这样的代码:

class SomeClass
  constructor: ->
    @someAttr = false

  someFunction: ->
    process.nextTick ->
      @someAttr = true

obj = new SomeClass
obj.someFunction()
obj.someAttr # Would still be false, because the @ (this) is in the process context

它不会工作,因为 process.nextTick 将我们带入一个不同的上下文,其中 @someAttr 未定义。我该如何解决这个问题(当我想调用 SomeClass 的方法时)?

最佳答案

解决这个问题的通常方法是将 this 的引用存储在局部变量中,该变量在匿名函数中可用。在 JavaScript 中:

function someFunction() {
  var self = this;
  process.nextTick(function() {
    self.someAttr = true;
  });
}

CoffeeScript 有一个特殊的语法来帮助解决这个问题; “fat arrow”:

class SomeClass:
  someFunction: ->
    process.nextTick =>
      @someAttr = true

关于oop - nextTick 在类中的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13901927/

相关文章:

java - GameManager 类型类的单一职责原则

javascript - 我可以用什么来代替 app.use(express.bodyParser());

javascript - React.js。错误: Invalid value for <path> attribute d

javascript - 在自执行匿名函数中使用 undefined

javascript - 使我的 LiveTime 对象成为文字

Python:OOP 开销?

javascript - 循环中带有附加参数的回调

javascript - 变量在 youtube 搜索 api 函数之外未定义

javascript - 在 CoffeeScript 模块中导出对象的优雅方法是什么?

python - 在数值工作中混合使用 numpy 和 OO