我很难理解为什么我不能在get request的回调上链接.map()函数。
const random = max => Math.floor((Math.random() * max) + 1);
this._http.get('https://unsplash.it/list')
.map(response => response.json())
.map(metaImages => metaImages.url_post)
.subscribe(urls => {
this.imgSrc = urls[random(urls.length)];
});
所以我像这样分解了
const random = max => Math.floor((Math.random() * max) + 1);
this._http.get('https://unsplash.it/list')
.map(response => response.json())
.subscribe(metaImages => {
const urls = metaImages.map(url => url.post_url);
this.imgSrc = urls[random(urls.length)];
});
但是为什么这是呢?感谢您的帮助。
请确保您不会混淆可观察的可观察到的可观察到的发射流,并用映射一个数组,该数组在数组中映射元素。在您的情况下,如果您想在订阅前在可观察的级别上映射,则可观察的地图必须对排放的数组进行映射。
const random = max => Math.floor((Math.random() * max) + 1);
this._http.get('https://unsplash.it/list')
.map(response => response.json())
.map(metaImages => metaImages.map(url => url.post_url))
^^^ MAP EMITTED ARRAY ^^^ MAP ELTS IN EMITTED ARRAY
.subscribe(urls => this.imgSrc = urls[random(urls.length)]);