处理异步事件列表的优雅方法是什么,并且一旦完成就会继续?

时间:2017-12-28 14:26:57

标签: angular asynchronous rxjs subject-observer

我正在构建一个Angular应用。在我的组件的构造函数中,我正在从服务器发起一个请求,这些元素自然是异步发生的。这些请求以rxjs/Behavior个对象的形式返回给我,我订阅了这些对象。

我需要做的是在最后一个回来后立即继续处理。但我需要以确保按照提交顺序处理它们,而不一定按照它们返回的顺序进行处理。

我可以创建一个janky hack来检测最后一个返回的时间:

let counter = 0;
let output = new Array( input.length );
for ( let i = 0 ; i < input.length ; i++ ) {
  counter++;
  fetch( input[i] ).subscribe( 
    result => {
      output[i] = result;
      counter--;
      if ( counter === 0 ) {
        // what to do at the end
      }
    }
  );
}

这很有效。但它很丑陋,不容易理解,而不是我称之为生产就绪代码。

一旦完成一系列主题后,做某事的角度方式是什么?

1 个答案:

答案 0 :(得分:3)

您正在寻找const Component = () => <div onTransitionEnd={handleTransitionEnd} onClick={startStatusTransition} />

forkJoin

有关详细信息和需要注意的一些事项,请参阅the docs

作为未来的扩展提示,rxjs网站有一个非常好的调查问卷,可帮助您找到您在各种情况下寻找的运营商。