[英]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.