如何正确组合Javascript类和回调?

时间:2017-10-08 15:52:06

标签: javascript class callback

这不是我的实际代码(希望很明显),但它是一个非常简短的例子来证明这个问题。

我正在用一个接受回调作为参数的方法编写一个类。当方法完成时,它应该调用回调。

class Demo {
    constructor() {
        this.method1();
    }

    method1() {
        console.log("Method1");
        this.method2(this.method1);
    }

    method2(onDone) {
        console.log("Method2");
        onDone();
    }
}

new Demo();

所以我想让它在调用method1method2之间来回跳转。如果它正常工作,我应该最终得到堆栈溢出,但是发生了什么呢:

Method1
Method2
Method1
Uncaught TypeError: Cannot read property 'method2' of undefined
  at method1 (demo.js:8)
  at Demo.method2 (demo.js:13)
  at Demo.method1 (demo.js:8)
  at new Demo (demo.js:3)

不知何故,当我们第二次进入method1时,忘记了thisDemo的一个实例。我尝试用onDone()替换method2中的this.onDone()但是它完全找不到onDone(这是有道理的 - onDone是参数的名称,而不是Demo成员的姓名。)

这样做的正确方法是什么?

0 个答案:

没有答案