[問題] 在實作登入功能 卡住 ,想請教問題出在哪 謝謝

各位前輩好,小弟剛開始接觸angular 目前在做些練習功能,但在做第一個登入功能卡住 想請教一下前輩給予指導!! 謝謝!!

主要邏輯 是透過HTTP判斷帳號密碼是否正確,如果正確將進行登入動作,如無效則進行提示!!

問題是在 loginService.findByUserNameAndPassWord 中 確實有取得資料,但在判斷時資料卻不存在
有增加一些LOG 進行查看(如圖),想請問是哪些步驟有誤,謝謝!!



因為我是寫C#的,對JavaScript也只懂一點,
程式看起來應該算是callback function 處理的順序問題,
subscribe 所傳入的 function 是要等到資料回來時才會觸發,
在等待期間 javascript已經往下執行去判斷 if(user),
因為資料還沒回傳回來所以 user 物件來還是空值(undefined),
從Console視窗也可看見 ‘check user =>’ 是在最後才執行的,
所以將判斷邏輯(橘色區塊)放到 subscribe 內(綠色區塊)的最下面應該就正常了。
callback 應該可以視為非同步一種。

基本上 Jonny 回覆的是對的,這是因為非同步的關係。
Javascript 裡面的運行有分同步與非同步兩種,這又牽扯到 Event Loop 的觀念. (請看這的影片 ,解釋得非常清楚)
總而言之,呼叫api屬於非同步行為,他會被執行,但是並不會停下來等待回傳結果,所以程式碼會一直往下跑。

另外。使用者登入的 username 和 password, 這樣子寫的寫法非常的危險,在這是專案或是產品,請勿這樣子寫。

1個讚

感謝 Jonny 及 Kevin 給予指導 小弟在試看看!!
另外想請問一下 Kevin 大大 提到
使用者登入的 username 和 password, 這樣子寫的寫法非常的危險,在這是專案或是產品,請勿這樣子寫!!
為什麼不能這樣寫 雖然這只是我目前練習用 但也滿想知道原因 謝謝!!

你把使用者帳號密碼當作api request網址的一部分。這是危險的

了解 感謝指導 謝謝