gpt4 book ai didi

javascript - Angular无限循环调用函数

转载 作者:行者123 更新时间:2023-11-30 14:50:19 25 4
gpt4 key购买 nike

在一些 Angular 项目中,我遇到了同样的问题,每当我尝试在我的 HTML 中调用一个函数(从 api 中检索一些值)时,它都会触发一个无限循环。在下面的示例中,触发循环的是 getUser()。

HTML

<ul>
<li *ngFor="let order of orders">
{{ getUser(order.orderNr).emailAddress }}
</li>
</ul>

组件

private getOrdersList() {

this.orderService.getAll().subscribe(
orders => {
this.orders = orders;
}
);
}

public getUser(orderNr: number) {
return this.orderService.getUser(orderNr);
}

服务

public getAll(): Observable<Order[]> {
return this.api.get<Order[]>('orders');
}

public getUser(orderNr: number) {
return this.api.get<void>('orders/'+orderNr);
}

我认为这与 Angular 处理数据的方式有关,但我对 Angular 还很陌生,不确定如何在不引起循环的情况下检索这些数据。也许更有经验的人可以提供一些帮助?

最佳答案

这不是无限循环,它只是 Angulars 变化检测。

在开发过程中,每个变更检测运行也会在第 2 轮之后进行。任何异步调用完成(事件处理程序、超时...)时都会运行更改检测,因此可能会经常发生。

通常应避免绑定(bind)到 View 中的函数,而是将结果分配给一个字段并绑定(bind)到该字段。 Angular 非常有效地检查字段值是否已更改。

关于javascript - Angular无限循环调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48241618/

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