簡體   English   中英

Angular 6 Observer-兩次調用身份驗證

[英]Angular 6 Observer - Auth called twice

我是Observer和Http請求的新手。 我的代碼實際上在工作,但根本不優雅,問題是該URL被調用了兩次

isAuthenticated() {
    let obs = this.http.get('http://localhost:8080/api/isLoggedIn', { withCredentials: true })
    obs.pipe(
      map(data => data.json())
    ).subscribe(data => {
      if (data.user){
        let user = {
          "steam": {
            displayName: null,
            id: null,
            photo: null
          },
          "db": {

          }
        }
        // console.log(data)
        user.db = data.user.db[0]
        user.steam.displayName = data.user.displayName
        user.steam.id = data.user.id
        user.steam.photo = data.user.photos[2]
        localStorage.setItem('userData', JSON.stringify(user));
      }
    })
    return obs.pipe(
        map(data => !!JSON.parse(data["_body"]).success)
      )
  }

首先,為什么兩次調用“ http:// localhost:8080 / api / isLoggedIn ”?

第二,如何以一種全能的方式做到這一點? 我因為無知而被迫做2件事

您可以使用水龍頭算子,對蒸汽沒有任何副作用,數據將被傳遞到地圖

obs.pipe(
  map(data => data.json()),
  tap(data => {
  if (data.user){
    let user = {
      "steam": {
        displayName: null,
        id: null,
        photo: null
      },
      "db": {

      }
    }
    // console.log(data)
    user.db = data.user.db[0]
    user.steam.displayName = data.user.displayName
    user.steam.id = data.user.id
    user.steam.photo = data.user.photos[2]
    localStorage.setItem('userData', JSON.stringify(user));
  }
}),

    map(data => !!JSON.parse(data["_body"]).success)
  )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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