等待组件ngrx存储内的两个操作

时间:2018-11-19 17:34:46

标签: angular ngrx ngrx-store

我有两个名为METADATA_SUCCESS_ACTION_1和SUCCESS_ACTION_2的动作。 我如何等待这2个操作完成,然后订阅合并数据。

services

我要等待成功都发生,然后再处理作为元数据和成功数据的数据

1 个答案:

答案 0 :(得分:2)

听起来像您可以在此处使用forkJoin运算符(所有可观测值完成后,从每个可观测值中发出最后一个发出的值。)。从文档中:

  

为什么要使用forkJoin?

     

当您有一组可观测值和   只关心每个的最终发射值。一个常见的用例   因为这是如果您希望在页面加载时发出多个请求(或   其他事件),并且只希望在响应有   被所有人接受。这样类似于您的使用方式   Promise.all

     

请注意,如果提供给forkJoin的任何内部可观察物   错误,您将失去任何其他会观察到的可观测值的价值   如果您没有正确catch上的错误,则说明您已经完成了   内部可以观察到。如果您只关心所有内部可观测物   成功完成后,您可以从外面捕获错误。

     

还值得一提的是,如果您有一个观测到的物体发出更多   一项以上,而您担心先前的排放   forkJoin不是正确的选择。在这些情况下,您可能会更好   使用combineLatestzip之类的运算符。

要使用它,可以在上面的示例中使用以下代码。

forkJoin(
  this.actions.pipe(ofType(METADATA_SUCCESS_ACTION_1), take(1)),
  this.actions.pipe(ofType(SUCCESS_ACTION_2), take(1))
).subscribe(([data1, data2]) => {
  console.log(data1);
  console.log(data2);
})