草庐IT

rxjs_observable

全部标签

javascript - Anuglar2 生命周期事件作为 rxjs Observable

是否有构建方法来获取像OnDestroy这样的angular2生命周期事件作为rxjsObservable?我想订阅这样的可观察对象:ngOnInit(){MyService.myCustomFunction().takeUntil(NgOnDestroy)//NgOnDestroywouldbethelifecycleobservable.subscribe(()=>{//anycode});}这似乎比以下更直观且更易读:privatecustomObservable:Observable;ngOnDestroy(){this.customObservable.unsubscribe

javascript - Mutation Observer 未能检测到元素的 dom 移除

所以,我认为这会非常简单,以前有一个DOMNodeRemoved事件,但已弃用,而是MutationObserver应该使用,问题是,即使配置适当,它也不会触发。根据thisarticle关于从变异事件迁移到变异观察者,检测dom节点移除的配置是{childList:true,subtree:true},这适合给出childList是强制性的并且subtree根据themdnarticle,这意味着它将捕获不仅针对目标的突变,还针对目标的后代进行观察.无论如何,我做了一个jsfiddle问题,很简单,删除并且观察者应该记录变异记录,但它没有,看看你能不能弄清楚:)HTMLOhmygod

javascript - Array.observe 的 "add"事件在什么情况下会触发?

我正在学习如何观察数组对象。我发现以下内容令人惊讶:varfooArray=[];Array.observe(fooArray,function(changes){console.log('changes:',changes[0].type);});fooArray.push({});导致变化的类型是拼接而不是添加哪些方法会导致add类型的更改事件?在我看来,在其上推送单个值是最有可能的情况。 最佳答案 MDNreference不清楚在什么情况下触发每种变化类型。详细解释如下:拼接涵盖您希望在数组中发生的所有更改。以下所有函数都会触

javascript - RxJS skipWhile 与过滤器

skipWhile和过滤运算符有什么区别?constsource=interval(1000);constexample=source.pipe(skipWhile(val=>valconsole.log(val));constsource=interval(1000);constexample=source.pipe(filter(val=>val>5));constsubscribe=example.subscribe(val=>console.log(val)); 最佳答案 不同之处在于,在其表达式评估为false时,skip

javascript - RxJS - 从可观察对象中取出 n 个最后元素

我想从observable中获取最后3个元素。假设我的时间线是这样的:--a---b-c---d---e---f-g-h-i------j->其中:a、b、c、d、e、f、g、h、i、j是发射值每当发出新值时,我都想立即获取它,因此它看起来像这样:[a][a,b][a,b,c][b,c,d][c,d,e][d,e,f][e,f,g][f,g,h]...andsoon我认为这非常有用。想象一下建立一个聊天室,您希望在其中显示10条最新消息。每当收到新消息时,您都想更新您的观点。我的尝试:demo 最佳答案 您可以为此使用扫描:from

javascript - Angular2 中的 'rxjs/Subject' 是什么?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion我正在通过这个officialcookbook学习Angular2.下面的代码是突然出现的。为什么“missionAnnounced$”没有变量声明?让missionAnnounced$=...下面代码的逻辑是什么?import{Injectable}from'@angular/core';import{Subject}from'rxjs/Subject';@Injectable()exportclass

javascript - RxJS - 使具有重置无状态的计数器?

假设我有以下标记:-0+RESET以及以下Rx.js脚本:vartotal=0Rx.Observable.merge(//decrementRx.Observable.fromEvent($('#dec'),'click').map(function(){return-1}),//incrementRx.Observable.fromEvent($('#inc'),'click').map(function(){return+1}),//resetRx.Observable.fromEvent($('#res'),'click').map(function(){return-total

javascript - 如何在 RxJS 中完成 Observable

假设我们有一个Observable:varobservable=Rx.Observable.fromEvent(document.getElementById('emitter'),'click');如何让它完成(什么会触发所有订阅的观察者的onComplete事件)? 最佳答案 在目前的形式中,你不能。您的可观察对象源自未完成的来源,因此它本身无法完成。您可以做的是使用完成条件扩展此源。这会像这样:varend$=newRx.Subject();varobservable=Rx.Observable.fromEvent(docum

javascript - 在浏览器中导入 RxJS 6?

现在allmodernbrowsersupportjavascriptmodules,我正在浏览器中尝试importing代码。我们可以从unpkg.com获取npm模块,我找到了jspm项目,它将npm模块包装成浏览器可以使用的格式。但我仍然遇到问题,最明显的是RxJS.从版本6开始,RxJS建议您像这样导入构造函数和运算符:import{Observable,Subject,ReplaySubject,from,of,range}from'rxjs';import{map,filter,switchMap}from'rxjs/operators';但是如果我尝试在浏览器中使用:im

javascript - rxjs 在订阅时只使用一次 promise

我想第一次使用rxjs但有点卡住了,因为它的行为与我想要的不完全一样:在我的场景中,我想从promise中创建一个可观察对象.但我希望promise只被调用一次(不是在每个订阅上)并且我不希望它在创建时被调用(将调用推迟到第一个订阅)。首先我尝试了这个:varsource=Rx.Observable.fromPromise(_this.getMyPromise())这导致在创建时立即调用getMyPromise函数。这并不令人满意,因为那时我不知道源是否真的会被使用。然后我尝试了:varsource=Rx.Observable.defer(function(){return_this.