Ошибка чтения свойства, при использовании публичной функции внутри обратного вызова в js - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть класс, давайте предположим, что A, и у него есть две функции AA и BB следующим образом.

export class A {
    constructor(){}

    public async AA(X){
     return true;
    }

    public async BB(){
       var users=new Users({      // db model
         name: 'test'
       });

       users.save(function(err,data){
         if(err){
           console.log(err);
         }else{
            var result = await this.AA(data);   // Cannot read property 'AA' of null
         }
       });
    }

}

Я не уверен, как я могу получить доступ или сделать публичную функцию AA доступной внутри функции обратного вызова.

Я получаю ошибку: TypeError: Cannot read property 'addRecipient' of null

1 Ответ

0 голосов
/ 03 ноября 2018

1) кажется, что вы присвоили экземпляр класса User переменной users.

но здесь вы используете user вместо users

2) Проблема с этой операцией user.save(function(err,data){ if(err){ console.log(err); }else{ var result = await this.AA(data); // Cannot read property 'AA' of null } });

это ключевое слово внутри функции имеет область действия, отличную от глобальной this в классе

если можете, конвертируйте функцию в функцию стрелки

user.save((err,data) => {
     if(err){
       console.log(err);
     }else{
        var result = await this.AA(data);   // 
Cannot read property 'AA' of null
     }
   });

или вы можете передать глобальной области видимости переменную, а затем использовать ее.

var self = this;
user.save(function(err,data){
     if(err){
       console.log(err);
     }else{
        var result = await self.AA(data);   // 
Cannot read property 'AA' of null
     }
   });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...