2017-04-22 19 views
0

我做的nativescript /角度的教程,我發現代碼中的東西,我不明白並希望澄清一下。什麼是「結果」是指從nativescript的http.get請求獲得一個可觀察的.MAP運營商/角

在第4章(Nativescript模塊),當他們做了http.get resquest檢索購物清單,他們得到的可觀察我發現它是throught一些地圖操作過去了,這裏是代碼:

import { Injectable } from "@angular/core"; 
import { Http, Headers } from "@angular/http"; 
import { Observable } from "rxjs/Rx"; 
import "rxjs/add/operator/map"; 

import { Config } from "../config"; 
import { Grocery } from "./grocery"; 

@Injectable() 
export class GroceryListService { 
    constructor(private http: Http) {} 

    load() { 
    let headers = new Headers(); 
    headers.append("Authorization", "Bearer " + Config.token); 

    return this.http.get(Config.apiUrl + "Groceries", { 
     headers: headers 
    }) 
    .map(res => res.json()) 
    .map(data => { 
     let groceryList = []; 
     data.Result.forEach((grocery) => { //<------HERE 
     groceryList.push(new Grocery(grocery.Id, grocery.Name)); 
     }); 
     return groceryList; 
    }) 
    .catch(this.handleErrors); 
    } 

    handleErrors(error: Response) { 
    console.log(JSON.stringify(error.json())); 
    return Observable.throw(error); 
    } 
} 

我的問題是,什麼是「結果」是指在第二.MAP

他們爲什麼不乾脆把

data.forEach((grocery) => { 

我問,因爲我不知道,如果它是從.map(res => res.json)或其他東西得到的可觀察對象的對象屬性。

你能指出我的在哪裏呢,有些文檔「結果」從何而來又意味着什麼?

感謝advaced。

回答

2

首先,這條線.map(res => res.json())解析響應身體成JSON對象。然後第二個map允許在data參數下訪問此json對象。通過data表示的JSON對象實際上是使用Result作爲映射到從下面這個安全提醒HERE後端返回的數據的密鑰周圍的實際響應結果數據的包裝。所以data.Result只是映射到從後端返回的實際數據的關鍵。後端可以使用不同的密鑰名稱,例如,祕密,那麼你會做data.secret到從服務器獲取

+0

返回的數據謝謝了很多,這非常有意義。 –