当前位置: 首页 > 知识库问答 >
问题:

RxJS-如何将新道具传递给观察者

赵昊阳
2023-03-14

使用RxJS如何在观察者上传递新属性?所以基本上我希望道具“customProp”可以被观察到

const { Observable } = require('rxjs');

const observable = Observable.create(function (observer) {
    console.log(observer.customProp); //How to get this working?
    observer.next(1);
    observer.next(2);
    observer.next(3);
    setTimeout(() => {
        observer.next(4);
        observer.complete();
    }, 1000);
});

console.log('just before subscribe');
observable.subscribe({
    next: x => console.log('got value ' + x),
    error: err => console.error('something wrong occurred: ' + err),
    complete: () => console.log('done'),
    customProp: 'Hello World RxJS',
});
console.log('just after subscribe');

---->>> Output
just before subscribe
undefined //How can I get this working, please?
got value 1
got value 2
got value 3
just after subscribe
=> undefined
got value 4
done

添加更多的信息-所以基本上,我试图创建一个冷可观察的,其中制片人需要一个道具,应该来自订户

//Cold observable
var coldObservable = new Observable((observer) => {
    var myProducerObj = new MyProducer();
    myProducerObj.executeQuery(observer.customProp);
   // How could we get customProp over here?
});

添加用法信息--coldObservable是DB连接函数,customProp是需要在DB上执行的查询

共有1个答案

柯骏
2023-03-14

如果不扩展可观察的类,这是不可能的,这是不需要的。它可以是工厂功能:

const createObservableWithCustomProp = (customProp, observer) => {
  return new Observable((observer) => {
    var myProducerObj = new MyProducer(customProp);
    ...
  });
};

通常很少需要手动构造观测值,因为RXJSAPI提供了丰富的特性集来创建、转换和组合观测值。

 类似资料:
  • 问题内容: 我试图找到定义可以以一般方式使用的组件的正确方法: 当然,可以想象并在父组件和子组件之间进行渲染的逻辑。 对于这个问题,这是一个虚拟的实现: 问题是,每当您用于定义包装器组件时,如何将某些属性传递给其所有子组件? 问题答案: 用新道具克隆Children 您可以使用React.Children遍历子级,然后使用React.cloneElement使用新的道具(浅合并)克隆每个元素,例如

  • 我是一个相当新的反应,这是一个我正在努力解决的问题。

  • 问题内容: 我正在尝试找到定义可以以一般方式使用的某些组件的正确方法: 当然,您可以想象并作为该逻辑的示例,在父组件和子组件之间存在一种渲染逻辑。 对于这个问题,这是一个虚拟的实现: 问题是,每当您用于定义包装器组件时,如何将某些属性传递给其所有子组件? 问题答案: Cloning children with new props 您可以使用React.Children遍历子级,然后使用React.

  • 在角度分量的顶部有以下初始化。 在我的组件中的某个地方,我使用选择器对Ngrx存储进行以下调用,以获取可观测数据。所有这些都很好,我得到了我想要的数据。 我需要知道这个可观察的什么时候完成。我需要设置一个布尔值,当所有可观察到的数据都试图完成时,它将关闭加载指示器。这是通过Web服务完成的。 因为可观测的源来自其他地方,所以我无法挂起“完整”回调

  • 我使用的是dev-express中的react-grid库,库中有一个表组件,我们可以向它传递单元格组件,在CustomCell中,我使用的是Material UI中的菜单 在上述情况下,菜单工作良好, 但是我想要传递道具到这个组件,我尝试了以下操作 在这种情况下菜单不工作,我想知道是否有一个替代的方法来实现第二种情况。

  • 组件具有变量作为观察者: 当