我们可以在app.module.ts中使用如下代码获取当前的cartid:exportclassAppModule{constructor(_cart:ActiveCartService){_cart.getActiveCartId().subscribe((data)=>console.log('Jerry:',data));console.log(_cart);}}打印输出:在执行Angular依赖注入框架时,先依次执行pipeoperator中的Operator逻辑,比如take(1):take简单的返回一个函数,这个函数是什么时候触发的?在pipe操作中调用:此时返回一个新函数:Observable的lift操作:关于take(1)的使用:当开发者只对stream的第一个emission值感兴趣时,可以使用take。比如我们想在进入页面的时候看到用户最先点击了什么,或者我们想订阅点击事件,获取第一次点击。另一个用例是需要在特定时间点拍摄数据快照,但不需要进一步排放。例如,用户令牌更新流程,或Angular应用程序中基于流程的路由保护。如果您想根据某些逻辑或另一个可观察值获取可变数量的值,您可以使用takeUntil或takeWhile.take而不是skip,其中take将获取前n个发射,而skip将跳过前n个发射。以下示例将输出1://RxJSv6+import{of}from'rxjs';import{take}from'rxjs/operators';//emit1,2,3,4,5constsource=of(1,2,3,4,5);//取第一个发出的值然后完成constexample=source.pipe(take(1));//output:1constsubscribe=example.subscribe(val=>console.log(val));下面的代码将输出整数序列0,1,2,3,4://RxJSv6+import{interval}from'rxjs';import{take}from'rxjs/operators';//emitvalueevery1sconstinterval$=interval(1000);//取前5个发射值constexample=interval$.pipe(take(5));//output:0,1,2,3,4constsubscribe=example.subscribe(val=>console.log(val));以下代码将显示第一次点击HTML页面上的div标签的鼠标坐标://RxJSv6+import{fromEvent}from'rxjs';import{take,tap}from'rxjs/operators';constoneClickEvent=fromEvent(document,'click').pipe(take(1),tap(v=>{document.getElementById('locationDisplay').innerHTML=`您的第一次点击是在位置${v.screenX}:${v.screenY}`;}));常量订阅=oneClickEvent.subscribe();divelement:
