Rxjs 使用Rx.js以正确顺序组合2个阵列

Rxjs 使用Rx.js以正确顺序组合2个阵列,rxjs,Rxjs,我是一个新的Rx.js,试图让这个场景正常工作。基本上我需要将以下两个序列合并成一个数组,其中obs1元素总是在obs2元素之前 var obs1 = Rx.Observable.create(function(observer){ setTimeout(function(){ observer.next([1,2,3]); }, 1000); }); var obs2 = Rx.Observable.create(function(observer){ setTimeout(funct

我是一个新的Rx.js,试图让这个场景正常工作。基本上我需要将以下两个序列合并成一个数组,其中obs1元素总是在obs2元素之前

var obs1 = Rx.Observable.create(function(observer){
setTimeout(function(){
 observer.next([1,2,3]);
  }, 1000);
});

var obs2 = Rx.Observable.create(function(observer){
setTimeout(function(){
 observer.next([4,5,6]);
  }, 10);
});
顺便说一句,我不会“完成”这些观察到的任何东西

我希望订阅中的最终输出为[1,2,3,4,5,6]。 我尝试了,concat,flatMap的一些变化,但没有帮助。我可能会创建另一个可观察对象,然后通过推动obs1的元素,然后推动obs2的元素,然后调用“next”来创建一个数组,但这并不是正确的方法

请您帮助理解哪些操作符可以在这里工作?

首先,编写代码的“RxJs”方式是:

var obs1 = Rx.Observable.of([1, 2, 3]).delay(1000);
var obs2 = Rx.Observable.of([4, 5, 6]).delay(10);
然后,您可以使用
concat
运算符:

obs1
  .combineLatest(obs2)
  .map(([rslt1, rslt2]) => [...rslt1, ...rslt2])
  .do(arr => console.log(arr)) // 1, 2, 3, 4 ,5, 6
  .subscribe()

这是一个有效的提示:

如果您没有使用任何完整的通知,那么您如何知道何时可以开始从第二个可观察值发出值?