[英]Angular map not looping before returning observable
我正在檢索 http 響應,我需要將 json 正文提取到數組中。 我成功檢索到,但主要問題是遍歷地圖中返回的數據。 在返回 observable 之前它不會循環。
在服務器類中,我收到 json 響應並注意到 for 循環,它跳轉到return res;
沒有循環。 此外,我在forLoop
打印的任何內容都不起作用。
getServers() {
return this.http.get('https://udemy-ng-http-56bbb.firebaseio.com/data.json')
.pipe(map
(res => {
servers1: any;
servers1 = res;
for (const server of servers1) {
server.name = 'FETCH_' + server.name;
}
return res;
}));
}
在onGet()
,我也嘗試在訂閱它時循環。 還是行不通
onGet() {
this.serverService.getServers().subscribe(
(response) => {
for (this.server of response) {
this.server.name = 'FETCH_' + this.server.name;
console.log( this.server.name.json());
}
},
(error) => console.log(error)
);
}
我希望這個forloop
在沒有pipe
情況下像下面一樣工作。 我正在使用RxJS 6+
和..pip(map)..
。 它在沒有管道的情況下使用rxjs-compat
時rxjs-compat
getServers() {
return this.http.get('https://udemy-ng-http-56bbb.firebaseio.com/data.json').map
(res => {
this.servers1 = res;
for (const server of this.servers1) {
server.name = 'FETCH_' + server.name;
}
return res;
});
}
這是輸出。
-LdlacC74PPS93h9HzQc: Array(2)
0:
capacity: 10
id: 1108
name: "Testserver"
__proto__: Object
1:
capacity: 100
id: 953
name: "Liveserver"
__proto__: Object
length: 2
__proto__: Array(0)
-LdnUvw_idV440wn3uIA: Array(2)
0:
capacity: 10
id: 6006
name: "Testserver"
__proto__: Object
1:
capacity: 100
id: 4260
name: "Liveserver"
__proto__: Object
length: 2
__proto__: Array(0)
__proto__: Object
名稱應該是FETCH_ Testserver
而不僅僅是Testserver
。
試試下面:
getServers() {
return this.http.get('https://udemy-ng-http-56bbb.firebaseio.com/data.json')
.pipe(map
(res => this.transformationMethod(res)));
}
transformationMethod(res){
Object.keys(res.data).forEach(resKey => {
const obj = res.data[resKey];
obj.forEach(data => {
data.name = 'Fetch_' + data.name;
})
})
return res;
}
對於像這樣的數據:
data = {
"data": {
"-LdlacC74PPS93h9HzQc": [{
"capacity": 10,
"id": 1108,
"name": "Testserver"
}, {
"capacity": 100,
"id": 953,
"name": "Liveserver"
}],
"-LdnUvw_idV440wn3uIA": [{
"capacity": 10,
"id": 6006,
"name": "Testserver"
}, {
"capacity": 100,
"id": 4260,
"name": "Liveserver"
}]
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.