簡體   English   中英

在TypeScript中,如何在本地更改全局變量的值?

[英]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()

是異步的。 這就是為什么要向其傳遞回調函數。

這意味着操作順序為:

  1. let flag = 1 ;
  2. 使用this.auth0.client.login()啟動異步操作
  3. 測試if (flag == 0) //當然不會觸發,因為flag仍然等於1
  4. 異步回調觸發,您嘗試設置標志,但是為時已晚。

您需要以某種方式將邏輯移到事物的異步方面。 這可能需要您的主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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM