为什么我不能在可观察量上链接 .map() 函数



我很难理解为什么我不能在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)]);

最新更新