簡體   English   中英

角度圖在返回可觀察之前不循環

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

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