[英]In TypeScript, how do I change the value of a global variable locally?
public login(username: string, password: string): string {
const options = {};
let flag = 1;
this.auth0.client.login({realm: 'Username-Password-Authentication', username, password}, (err,authResult) => {
if(err) {
flag = 1;
console.log(err);
return;
}
else if (authResult && authResult.accessToken && authResult.idToken) {
let flag = 0;
this.setSession(authResult);
alert("Flag: " + flag);
}
else {
console.log(err);
return;
//alert('Error: ${err.error_description}. Check the console for further details.'); console.log(username,password)
}
});
if(flag == 0) {
alert(flag);
return "Invalid credentials";
}
}
在此代碼塊中,由於全局值為1,因此從不執行“ if(flag == 0)”語句。如何更改flag的全局值?
您的主要問題是:
this.auth0.client.login()
是異步的。 這就是為什么要向其傳遞回調函數。
這意味着操作順序為:
let flag = 1
; this.auth0.client.login()
啟動異步操作 if (flag == 0)
//當然不會觸發,因為flag
仍然等於1 您需要以某種方式將邏輯移到事物的異步方面。 這可能需要您的主login()
接受一個回調,您可以在is.auth0.client.login()
完成或使用promise時is.auth0.client.login()
該回調。
您的if(flag == 0) {}
測試必須以某種方式包含在回調中。 而且, else if
-我認為您希望flag = 0;
您可能不想在else if
內部創建新的局部變量flag = 0;
let flag = 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.