#typescript #class #scope #instance-variables #unreachable-code
Вопрос:
class User {
public pname: string;
private ptoken: string;
public token_status:boolean = false;
public constructor(pname: string, ptoken: string) {
this.pname = pname;
this.ptoken = ptoken;
}
public Token_Valid() : Promise<token_format>{
return new Promise((accept:any)=>{
db.all("select * from `token` where `name` = $name and `token` = $token;",{$name:this.pname,$token:this.ptoken},(err:any,res:any)=>{
if(res[0]){
accept(res[0]);
}else{
accept({Error:'Person was not found, or token is incorrect soryy ...'})
}
});
})
this.token_status = true;
}
Следующее сообщение выдается, когда я пытаюсь присвоить логическое значение в методе слишком верно
** Не мог бы кто-нибудь объяснить причину возникновения ошибки, а также как глобальные переменные работают в классах внутри Typescript / Javascript, как и на других языках, это не было бы проблемой **
Ответ №1:
Проблема здесь кажется довольно простой, вы возвращаете new Promise
внутри Token_Valid()
метода, но устанавливаете this.token_status
после его возврата.
В JavaScript ничего нельзя сделать после return
утверждения метода*, поэтому вы захотите преобразовать этот метод в любой:
- Установите переменную, прежде чем возвращать обещание,
- Сохраните значение обещания в качестве переменной, дождавшись его , затем установите
this.token_status
и верните ранее сохраненное значение. - Добавьте a
.then()
к возвращенному обещанию, которое принимает значение (возвращенное из созданного обещания), которое изменяет значениеthis.token_status
, а затем возвращает значение, которое оно приняло.
*если вы не используете try { ... } finally { ... }
блок.
Комментарии:
1. Спасибо за помощь и объяснение, Крис !