【问题标题】:Subject inside RXJS's Subscribe methodRXJS 订阅方法中的主题
【发布时间】:2018-12-31 10:26:48
【问题描述】:

我已经克隆了一个基于 RXJS 的 Github repo,带有 angular 2+。 帮我理解 this.createTodo$.subscribe(this.create$) 的含义 在下面的代码中。

我能够理解,这里我们正在尝试订阅 createTodo$ observable。在订阅方法中,我总是设置数据,但是什么 this.create$ 表示。这里 create$ 是一个 Subject。

请找到进行此订阅的服务代码。

import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable ,Subject} from 'rxjs';
import {  itemmodel } from './models/listmodel';
import {scan,map} from 'rxjs/operators';

type TodosOperation = (todos: itemmodel[]) => itemmodel[];
const initialTodos=[];

@Injectable({
  providedIn: 'root'
})

export class SharedserviceService {
  public data;
  create$: Subject<itemmodel> = new Subject<itemmodel>();
  createTodo$: Subject<itemmodel> = new Subject<itemmodel>();
  todos$:Observable<itemmodel[]>;
  public item = new BehaviorSubject([]);
  update$: BehaviorSubject<TodosOperation> = new BehaviorSubject<TodosOperation>((todos: itemmodel[]) => todos);

  constructor(){ 
    this.todos$ = this.update$.pipe(scan((todos: itemmodel[], operation: TodosOperation) => operation(todos), initialTodos));

    this.create$.pipe(map((todo) => {
      return (todos) => todos.concat(todo);
    })).subscribe(this.update$);

    this.createTodo$.subscribe(this.create$);
  }

  public additem(item){
    this.createTodo$.next(item);
  }

}

【问题讨论】:

标签: angular rxjs observable subject behaviorsubject


【解决方案1】:

这是一个命名约定。使用美元符号 ($) 表示该变量是一个流(观察者)。

要观察流,你订阅它

【讨论】:

  • 是的,我知道这一点。但是 this.create$ 在里面做了什么
  • 它拥有一个Itemmodel
猜你喜欢
  • 2020-09-20
  • 2021-12-30
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 2022-12-20
相关资源
最近更新 更多