2016-05-23 60 views
1

我想我需要某种类型的诺言链,但语法躲开我结果...角2 - 两个服务,第二个要求的第一

在同一组件:

我打电话:

this.somethingService.getSomethings().then(somethings => this.somethings = somethings); 

然后我需要调用:

this.otherService.getOthers(this.somethings).then(others => this.others = others); 

在第二服务呼叫我使用的结果Ø f第一个在其内容上执行集合函数,但在第二个调用时它是空的,因此第二个服务返回空。

如何获得第二个服务,以等待第一个承诺解决。

感谢名单

史蒂夫

回答

1

你可以链的承诺是这样的:

this.somethingService.getSomethings().then(somethings => { 
    this.somethings = somethings; 
    return this.otherService.getOthers(somethings); 
}).then(others => { 
    this.others = others; 
}); 

第二个回调将接收第一回调的承诺回报的结果。

+0

感谢您的快速响应,这不会错误 - 但this.somethings是空的? – Steve

+0

Oups。我的回答中有一个错字:'somethings'而不是'this.somethings'。我更新了它... –

+1

好吧,Service 2现在返回计算值,但由于* ngIf =“somethings.length> 0”,我的视图是空的 - 它仍然认为它是一个空数组。 – Steve

相关问题