Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理多个服务调用以绑定到Angular2中的列表_Angular_Typescript_Observable - Fatal编程技术网

处理多个服务调用以绑定到Angular2中的列表

处理多个服务调用以绑定到Angular2中的列表,angular,typescript,observable,Angular,Typescript,Observable,我们的应用程序有一个页面,该页面将角色及其用户显示为页面中的UL列表。 一旦我们选择任何角色,就会填充用户列表。使用下面的服务调用获取用户- public getUsers(roles: Any): Users { return service.getUsers(roles).subscribe((users) => this.userList = users; );) 问题在于,当用户获取仍在进行时,用户界面中的角色选择未被禁用,因此上述功能的角色输入会动态更改,从而导致用户列表显示不

我们的应用程序有一个页面,该页面将角色及其用户显示为页面中的UL列表。 一旦我们选择任何角色,就会填充用户列表。使用下面的服务调用获取用户-

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是第一个回答:)