gpt4 book ai didi

javascript - 如何将一个可观察对象附加到另一个?

转载 作者:行者123 更新时间:2023-11-29 10:26:11 24 4
gpt4 key购买 nike

我想在我的列表 ${this.url}/users?offset=${offset}&limit=12 中初始化 12 个用户,但是随着滚动,这个偏移量应该增加 8 个用户。

我想为此使用无限滚动。我的问题是我正在使用 observables(userList) 并且我不知道如何将包含 8 个成员的新列表附加到旧列表。在互联网的教程中,所有人都使用 concat() 但这是针对数组的:/我自己尝试了一些东西来调用整个列表 + 8 偏移量,当 loadMore 为真时,但不知何故不起作用.

我的代码:

服务.ts

  // get a list of users
getList(offset= 0): Observable<any> {
return this.http.get(`${this.url}/users?offset=${offset}&limit=12`);
}

页面.ts

@ViewChild(IonInfiniteScroll) infiniteScroll: IonInfiniteScroll;
userList: Observable<any>;
offset = 0;
...
getAllUsers(loadMore = false, event?) {
if (loadMore) {
this.userList = this.userService.getList(this.offset += 8) //new 8 users
.pipe(map(response => response.results));
}
this.userList = this.userService.getList(this.offset) // initials 12 users
.pipe(map(response => response.results));
if (event) {
event.target.complete();
console.log(event);
console.log(loadMore);
}
}

页面.html

...
</ion-item>


</ion-list>
<ion-infinite-scroll threshold="100px" (ionInfinite)="getAllUsers(true, $event)">
<ion-infinite-scroll-content
loadingSpinner="crescing"
loadingText="Loading more data...">
</ion-infinite-scroll-content>
</ion-infinite-scroll>

</ion-slide>

<ion-slide>

最佳答案

使用Merge将多个 observables 合并为一个 observable:

getAllUsers(loadMore = false, event?) {
if (loadMore) {
const newUserList$ = this.userService.getList(this.offset += 8) //new 8 users
.pipe(map(response => response.results));
this.userList = merge(this.userList, newUserList$); // merge observables

}
this.userList = this.userService.getList(this.offset) // initials 12 users
.pipe(map(response => response.results));
if (event) {
event.target.complete();
console.log(event);
console.log(loadMore);
}
}

更新

从您的 URL 中,也许您应该删除限制参数:

  getList(offset= 0): Observable<any> {
return this.http.get(`${this.url}/users?offset=${offset}`);
}

关于javascript - 如何将一个可观察对象附加到另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58784340/

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