gpt4 book ai didi

javascript - 可观察流上的映射未调用函数

转载 作者:行者123 更新时间:2023-12-03 02:07:32 25 4
gpt4 key购买 nike

我有一个 Observable 数组,它是通过将 HTTP 请求推送到 Observable 数组中来创建的。

这些请求完成后,我forkJoin Observables 集合,然后从那里循环这个集合,对每个项目执行一些功能,最后执行最后一种方法。

我有类似的东西:

// Firstly, get all of the items
private _getItems(): Observable<MyItems[]> {
let items: Observable<MyItems>[] = [];

Object.keys(this._items).map(item => {
items.push(this.service.getItemState(item))
});

return Observable.forkJoin(items);
}
<小时/>
// Secondly, loop through items and perform function
this._getItems()
.map(items => items.map(item => {
this._setState(item);
}))
// Finally, do my last method
.subscribe(() => {
this._prepareItems();
});
}

我不确定为什么,但 this._setState(item) 从未被调用。这是这样做的正确方法吗?

谢谢

最佳答案

首先,forkJoin 是一个不错的选择,因为它会等待所有 http 请求完成。但我不确定对象上的 forEach 是否正常工作?难道不是这样吗:

Object.keys(this._items).map((key, index) => {
items.push(this.service.getItemState(this._items[key]))
});

在第二个示例中,您通过使用带有 forkJoin 可观察值作为源的映射来创建一个新的可观察值。您使用 map 但不映射任何内容,因此使用 tap()(在 RxJS 5.5 之前称为 do())

我强烈建议您在几乎每一行代码中插入一个 console.log 并查看其是否正常工作。对象上的 forEach 是否有效? _getItems() 是否每次都会发出一些东西? (使用 do/tap 来获取 console.log)

顺便说一句,你不应该将所有东西称为“项目”。 this._setState(item); 可能更像 this._setState(itemState); 不是吗?

关于javascript - 可观察流上的映射未调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49741466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com