C#术语理解RxJS的Flatmap,FlatmapLatest我主要是一名C#开发人员,在JavaScript中扩展我的视野,最近偶然发现了一个名为AlibraryforRxJS的工具。我想了解Map、Flatmap、FlatmapLatest之间的关系,C#.Net中是否有等效项?RxJS是ReactiveExtensions系列的一部分,它以各种语言实现,包括C#(当然,因为Rx现在是Microsoft项目)。所以,是的,在C#中有等价物......?map、flatMap和flatMapLatest的概念不是很明显。我自己是RxJS的初学者,所以我希望我做对了......map获取可观察的项目并将它们映射(转换)到其他东西。例如。它可以是对数字的算术运算,将基元转换为对象或从对象中删除键等。flatMap有多种变体,但基本上它需要一个函数,该函数从源可观察对象的每个项目返回一个可观察对象。这会产生一个流stream(其中stream=observable=itemsofitems),因此flatMap将其扁平化为单个流/可观察的,所有项目按顺序排列。嗯,令人困惑的解释,恐怕...让我们做Ascii弹珠来解释。--A--------------------//第一个流--a1----a2-----a3------//flatMap的函数结果-----B----------------//第二个流-----b1----b2----b3---//flatMap的函数结果--a1-b1-a2-b2-a3-b3---//flatMapflatMapLatest是一个flatMap,它只从当前可观察对象中发出项目。如果出现新的可观察值,则忽略先前的值。--A--------------------//第一个流--a1----a2-----a3------//flatMapLatest的函数结果-----B----------------//第二个流-----b1----b2----b3---//flatMapLatest的函数结果--a1-b1----b2----b3---//flatMapLatest[编辑]我做了一些代码来更好地理解这个概念......显示flatMapLatest并不明显......我看到它用于AjaxRequest:如果发出了新的请求,则不需要考虑之前的请求)。演示:单击任意按钮以显示原始事件。以上就是C#学习教程:用C#术语看懂RxJS的Flatmap,FlatmapLatest分享的全部内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——//显示结果的通用代码varresults=document.getElementById('results');functionshowHTML(html){results.insertAdjacentHTML('beforeend',html);}functionshow(text,obj){showHTML(""+text+(obj!==undefined?':'+JSON.stringify(obj):'')+"");}functionshowObject(obj){show(""+JSON.stringify(obj)+"");}//真正的代码varbutton1=document.querySelector('#button1');varbutton2=document.querySelector('#button2');varbutton3=document.querySelector('#button3');varbuttonClickStream1=Rx.Observable.fromEvent(button1,'click');varbuttonClickStream2=Rx.Observable.fromEvent(button2,'click');varbuttonClickStream3=Rx.Observable.fromEvent(button3,'click');//原始Rx.Observable.merge(buttonClickStream1,buttonClickStream2,buttonClickStream3).subscribe(function(v){show("Value",v);},function(e){show("Error",e);},function(){show("Done");});//映射buttonClickStream1.map(function(e,i){e.id=i;//添加idet=newDate();//添加时间戳returne;}).subscribe(function(v){show("Button1",v)});//简化:没有错误,没有完成//FlatMapbuttonClickStream2//返回几个值.flatMap(function(e,i){returnRx.Observable.interval(1000).take(5).flatMap(function(x,j){returnRx.Observable.of(i+''+j)});}).subscribe(function(v){show("Button2",v)});//FlatMapLatestbuttonClickStream3//返回几个值但只保留最后一个.flatMapLatest(function(e,i){返回Rx.Observable.interval(1000).take(5).flatMap(function(x,j){returnRx.Observable.of(i+''+j)});}).subscribe(function(v){show("Button3",v)});测试图测试flatMap测试flatMapLatest本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
