self = this但无法在回调中访问self.function

时间:2016-09-01 12:36:30

标签: typescript this

我有以下代码块来存储对this的正确引用。 我正在使用Mongoose Models.Image

class some {
    public one() {
        var self = this;
        this.another(); //edited: this.another() is not a function
        Models.Image.findById(id).then(function(data) {
            self.another(); //self.another is not a function
            ....
        });
    }
    public another() {
        ....
    }
}

linter显示selfthis但是当我执行它时,会给我错误。这里发生了什么?怎么解决?

该类是绑定表达路由的路由处理程序。

我想补充更多。在this.another()内调用one()(不回调)仍然会给我is not a function错误。不知何故,this没有引用该类。 可能是什么问题?

2 个答案:

答案 0 :(得分:3)

  

已编辑:该类是绑定表达路由的路由处理程序。

问题可能在这里。

由于调用方法one的方式,this未绑定到类some的实例。问题不在于回调。在one的第一行,this已经有错误的值:

var self = this; // self has a wrong value because this has a wrong value 

答案 1 :(得分:-3)

另一个()应该在public one()中:

class some {
    public one() {
        var self = this;
        Models.Image.findById(id).then(function(data) {
            self.another(); //self.another is not a function

            ....
        });
    }
    public another() {
        ....
    }
}

也许这样更好:

class some {
    public one() {
        var self = this;
        Models.Image.findById(id).then(function(data) {
            self.another(); //self.another is not a function
            ....
        });
        another() {
            ....
        }
    }
}