处理多个服务调用以绑定到Angular2中的列表
我们的应用程序有一个页面,该页面将角色及其用户显示为页面中的UL列表。 一旦我们选择任何角色,就会填充用户列表。使用下面的服务调用获取用户-处理多个服务调用以绑定到Angular2中的列表,angular,typescript,observable,Angular,Typescript,Observable,我们的应用程序有一个页面,该页面将角色及其用户显示为页面中的UL列表。 一旦我们选择任何角色,就会填充用户列表。使用下面的服务调用获取用户- public getUsers(roles: Any): Users { return service.getUsers(roles).subscribe((users) => this.userList = users; );) 问题在于,当用户获取仍在进行时,用户界面中的角色选择未被禁用,因此上述功能的角色输入会动态更改,从而导致用户列表显示不
public getUsers(roles: Any): Users { return service.getUsers(roles).subscribe((users) => this.userList = users; );)
问题在于,当用户获取仍在进行时,用户界面中的角色选择未被禁用,因此上述功能的角色输入会动态更改,从而导致用户列表显示不正确的结果
对于ex.Role1和Role2,选择并进行服务器调用以获取用户。当服务器调用仍在进行时,我现在取消选择Role1,但通过此操作,我看到用户列表仍被Role1和Role2填充了几秒钟,然后列表用Role2的用户刷新
这是因为请求是异步的,并且userslist最初与Role1和Role2用户绑定,之后又与Role2用户绑定。在我们启动第二个请求或任何其他更好的方法时,是否有任何方法停止正在进行的请求以填充用户
谢谢你的帮助 您可以利用
可观察的
当您执行对服务器的调用以获取数据时,可以将其作为订阅存储在变量中。并在重试时取消订阅:
subscription: any;
getUsers(roles: Any): Users {
if(this.subscription['getUsers']) {
this.subscription['getUsers'].unsubscribe();
}
this.subscription['getUsers'] = service.getUsers(roles).subscribe(
(users) => this.userList = users;
);
}
您可以利用可观察的
当您执行对服务器的调用以获取数据时,可以将其作为订阅存储在变量中。并在重试时取消订阅:
subscription: any;
getUsers(roles: Any): Users {
if(this.subscription['getUsers']) {
this.subscription['getUsers'].unsubscribe();
}
this.subscription['getUsers'] = service.getUsers(roles).subscribe(
(users) => this.userList = users;
);
}
我们可以使用Observable
取消请求。您的类似片段如下所示
我们可以使用Observable
取消请求。您的类似片段如下所示
也许在取消选择时尝试呼叫取消订阅您可以使用ObserverHaps在取消选择时尝试呼叫取消订阅您可以使用ObserverHaps,但Mario是第一个回答:)谢谢,但Mario是第一个回答:)