如何在一个类本地方法中从Javascript回调访问typescript类成员
我有以下代码:如何在一个类本地方法中从Javascript回调访问typescript类成员,javascript,angular,typescript,callback,Javascript,Angular,Typescript,Callback,我有以下代码: export class AuthService { token: string; refreshToken: string; constructor(private router: Router) { } signinUser(username: string, password: string) { const user = new mylib.User(username, password); user.requestSession
export class AuthService {
token: string;
refreshToken: string;
constructor(private router: Router) { }
signinUser(username: string, password: string) {
const user = new mylib.User(username, password);
user.requestSessionToken(true, {
onOk: function (result) {
let tokenMap: any;
tokenMap = result;
this.token = tokenMap.sessionToken;
this.refreshToken = tokenMap.refreshToken;
mylib.Datastore.configureWithSessionToken(this.token);
this.router.navigate(['/signup']);
},
onError: function (error) {
console.error(error);
}
});
console.log(this.token);
console.log('signinUser Called!');
}
}
mylib
是Javascript库,它没有指向我的对象,因此this.token
不起作用
如何访问Javascript块中的类字段?箭头函数就是答案
export class AuthService {
token: string;
refreshToken: string;
constructor(private router: Router) { }
signinUser(username: string, password: string) {
const user = new mylib.User(username, password);
user.requestSessionToken(true, {
onOk: (result) => {
let tokenMap: any;
tokenMap = result;
this.token = tokenMap.sessionToken;
this.refreshToken = tokenMap.refreshToken;
mylib.Datastore.configureWithSessionToken(this.token);
this.router.navigate(['/signup']);
},
onError: (error) => {
console.error(error);
}
});
console.log(this.token);
console.log('signinUser Called!');
}
}
或者(老式),您可以使用bind()
:(函数(结果){…})。bind(此)
原因是在onOK
回调中,这可能是user
实例,而不是您的类
在处理回调时,请务必小心
这是什么
。我想您应该调用user.token
此
引用函数signinUser
,因为您在对象文本之外调用它。此外,似乎user.requestSessionToken
是异步的,因此您可能需要使用回调或承诺等待函数完成,然后才能访问此。令牌令牌是AuthService
类中的本地成员,而不在user
中。请参阅此文档-