首页 > 解决方案 > 在执行下一个代码之前等待 forkjoin 完成

问题描述

我想知道是否可以就某些我不确定的行为获得帮助。在我下面的代码中,clients.forEach() 给出了一个错误,我认为是因为它与 forkJoin() 同时执行。所以客户是空的。有没有办法让下一个代码“等待” forkJoin() 函数首先完成,而不必将 clients.forEach() 放在 subscription() 函数中。clients.forEach() 代码实际上很长而且很乱。

forkJoin({
      xclients: this.clients$,
      xkycMetrics: this.clientsBySHID$
    }).subscribe(({xclients, xkycMetrics}) => {
      clients = xclients,
      kycMetrics = xkycMetrics
    });

      // Client Data
      clients.forEach(client => {......});

标签: angulartypescriptsubscriptionangular9fork-join

解决方案


确保数据准备就绪的唯一方法是添加到该订阅函数。您始终可以将逻辑分离到自己的函数中并对其进行调用:

}).subscribe(({xclients, xkycMetrics}) => {
  clients = xclients,
  kycMetrics = xkycMetrics
  this.mapClients(clients)
});

mapClients(clients: type) {
   clients.forEach(client => {......});
}

推荐阅读