在下面的代码中,我尝试演示concatMap如何保留事件的顺序,即使对事件执行的操作未按顺序完成。
现在我得到了一个错误
delayerObservable.complete()不是函数
这基本上只是从教程中获取的。我先调用next(),然后再调用complete()。它应该可以工作,至少那是我的想法。
我可以通过返回randomDelayer.first()
实现所需的功能auth()
但是我想从内部完成可观察到的事情,因为我可能希望发送的事件不仅仅是一个。
<h1> Hi there {{ auth()->user()->username }} you are logged in as Admin
答案 0 :(得分:1)
rxjs-framework的版本4和6之间似乎有很多更改。缺陷源的工作版本是这样的:
const { Observable } = rxjs;
const { map, filter, concatMap, pipe } = rxjs.operators;
console.log('Starting....');
const myTimer = Observable.create((observer) => {
let counter = 0;
setInterval( () => {
counter++;
if (counter < 10){
console.log('nexting now with counter ' + counter);
observer.next(counter);
} else {
observer.complete();
}
},1000);
});
const myRandomDelayer = myTimer.pipe(
concatMap( (value) => {
const randomDelayer = Observable.create( (delayerObservable) => {
const delay = Math.floor(Math.random()*5000);
setTimeout(() => {
delayerObservable.next('Hello, I am Number ' + value + ' and this was my delay: ' + delay);
delayerObservable.complete();
}, delay);
});
return randomDelayer;
})
);
myRandomDelayer.subscribe( (message) => {
console.log(message);
});