所以我對JavaScript並不陌生,但我正在嘗試學習Angular2和更多關於JavaScript ES6 Promise的知識,並且我正在通過this tutorial來完成這項工作。在打造的pokedex-service.ts
文件中的部分中,getPokemon()
的部分功能如下:附加到.json()調用的.results屬性是什麼?
getPokemon(offset: number, limit: number) {
return this.http.get(`${this.baseUrl}?offset=${offset}&limit=${limit}`)
.toPromise()
.then(response => response.json().results) //<- line in question
.then(
// ... etc ...
);
}
據我所知,有角的HTTP服務,它返回一個可觀察,然後將其轉化爲一個承諾(通過toPromise()
),但我很困惑下一行會發生什麼: .then (response => response.json().results)
。
具體而言,我得到response
是Promise傳入的佔位符,我知道response.json()
將Promise的結果轉換爲JSON對象。但我不知道.results
屬性鏈接到response.json()
的末尾。
我檢查the Body.json() API,也許以爲這是承諾的屬性,我查the Promises API,卻找不到任何API中對應於results
任何屬性(或方法)。這個屬性是什麼,它來自哪裏?
此外,它與簡單使用response.json()
有什麼不同?它的返回值是否會傳入下一個then()
?
如果我猜的話(和我),我會說這是承諾的解決結果通過'以.json()返回'。 – Ouroborus
在我看來,有人正在訪問承諾的內部,他不應該這樣做。 – Bergi